觸發器實現源表操作(增,刪,改)自動補錄操作日誌

2022-08-24 13:24:10 字數 2092 閱讀 2479

1:源表資料修改時將修改的資料插入臨時表,標記欄位為修改

2:源表資料刪除時將刪除資料插入臨時表,編輯欄位為刪除

3:源表資料新增時將新增資料插入臨時表,標記欄位為新增

一:定義臨時表字段

1:檢視源資料testb表

-------------如何修改mysql已經建好表的編碼------------------------------

alter table  表名 default character set utf8 collate utf8_general_ci;

2:建立第乙個觸發器---插入觸發器

create  trigger tri_userc_insert after insert

on `usera` for each row

begin

insert into userc(idc,namec,agec,flogs,flog_time) select id,name,age,'插入',now() from usera where id   not in (select idc from `userc`);

end

3:建立第二個觸發器---更新觸發器

create  trigger tri_userc after update

on `usera` for each row

begin

set @point=(select name from `usera` where id = old.id );       

set @point02=(select age from `usera` where id = old.id );

if @point != old.name then

update `userc` set namec=@point where idc=old.id;

update `userc` set flogs='更新' where idc=old.id;

update `userc` set flog_time=now() where idc=old.id;

end if;

if @point02 != old.age then

update `userc` set agec=@point02 where idc=old.id;

update `userc` set flogs='更新' where idc=old.id;

update `userc` set flog_time=now() where idc=old.id;

end if;

end

4:建立第三個觸發器---刪除觸發器

create  trigger tri_userc_delete after delete

on `usera` for each row

begin

update userc set flogs = '刪除' where idc not in (select id from `usera`);

update userc set flog_time = now() where idc not in (select id from `usera`);

end

5:建表語句(a表)

create table `usera` (

`id` int(10) not null,

`name` varchar(50) default null,

`age` int(3) default null,

primary key (`id`)

) engine=innodb default charset=utf8;

6:建表語句(c表)

create table `userc` (

`idc` int(255) not null,

`namec` varchar(255) default null,

`agec` int(255) default null,

`flogs` varchar(255) default null,

`flog_time` datetime default null

) engine=innodb default charset=utf8;

MySQL 觸發器增刪改查基本操作

觸發器是與表有關的資料庫物件,指在insert updateldelete之前或之後,觸發並執行觸發器中定義的sql語句集合。觸發器的這種特性可以協助應用在資料庫端確保資料的完整性,日誌記錄,資料校驗等操作。大約是機關 觸發器型別 我們可以使用old,new 來獲取被修改的物件和修改後的物件 型別o...

oracle觸發器中增刪改查本表

oracle觸發器中增刪改查本表 1 只有before insert觸發器中才可以查詢或更新本表 create or replace trigger tri test ins before insert on test for each row declare v cnt integer begin...

增刪改的觸發器寫入日誌

觸發器的模型 格式 create trigger 給該觸發器起的名子 on 觸發器基於的是哪個表 after 在那種情況下開始觸發 insert delete update as begin 要執行的語句 可以建立乙個臨時表 insert into 給臨時表其的表名 values 寫入要編寫的字段 ...