1. 程式人生 > 資訊 >訊息稱特斯拉 Model Y 標準續航版上市首日訂單破萬

訊息稱特斯拉 Model Y 標準續航版上市首日訂單破萬

--觸發器:在增刪改之前或之後,觸發執行觸發器中定義的sql語句集合,可用於保持資料完整性,日誌記錄,資料校驗等操作,

觸發器型別有new:插入或更新後的新資料,old:刪改之前的資料
建立觸發器:
create trigger trigger_name
before/after insert/delete/UPDATE
on table_name
[for each row] --行級觸發器,mysql只有行級觸發器,Oracle還有語句級觸發器
begin
trigger_statement;
end;
--通過觸發器記錄test表的資料變更日誌,包含增刪改
--受限建立一張日誌表
create table test_log(
id int(11) not null auto_increment,
operation varchar(20) not null comment '操作型別,insert/delete/update',
operate_time datetime not null comment '操作時間',
operate_id int(11) not null comment '操作表的id',
operate_params varchar(500) comment '操作引數',
primary key(id)
)ENGINE=innodb DEFAULT charset=utf8;

--建立插入型觸發器
create trigger test_insert_trigger
after insert
on test
for each row
begin
insert into test_log(id,operation,operate_time,operate_id,operate_params)values(null,'insert',now(),new.id,concat('id:',new.id,',name:',new.name));
end$

向test表中插入一條資料 insert into test value(null,'trigger')
檢視日誌表是否有觸發器向裡面插入資料select * from test_log

--建立更新型觸發器

create trigger test_update_trigger
after update
on test
for each row
begin
insert into test_log(id,operation,operate_time,operate_id,operate_params)values(null,'update',now(),new.id,concat('更新之前:','id:',old.id,',name:',old.name,'更新之後,id:',new.id,',name:',new.name));
end$

檢視觸發器:

show triggers

刪除觸發器:

drop trigger trigger_name