觸發(fā)器同步更新

在MySQL環(huán)境下面,建立相關(guān)觸發(fā)器,在兩個(gè)表之間相關(guān)sql,希望能幫到大家
1.建person表

CREATE TABLE person (
id int(11) DEFAULT NULL,
name varchar(256) DEFAULT NULL,
sex char(16) DEFAULT NULL
)

建person_ex

CREATE TABLE person_ex (
id int(11) DEFAULT NULL,
name varchar(256) DEFAULT NULL,
sex char(16) DEFAULT NULL
)

2.實(shí)現(xiàn)的目標(biāo)當(dāng)person新增一條記錄,更新一條記錄或者刪除一條記錄,person_ex中sex字段為M的記錄跟著改變
sql代碼如下:
創(chuàng)建插入觸發(fā)器

create trigger person_trigger AFTER insert on person for each row
begin set @x = "hello trigger";
IF new.sex = 'M'
THEN
INSERT INTO person_ex(id,name,sex) VALUES (New.id,new.name,new.sex);
END IF;
end;

創(chuàng)建更新觸發(fā)器:

create trigger person_trigger_update AFTER UPDATE on person for each row
begin set @x = "trigger UPDATE";
IF new.sex = 'M'
THEN
DELETE from person_ex where person_ex.id = new.id;
INSERT into person_ex SELECT * from person where person.id = new.id;
END IF;
end;

創(chuàng)建刪除觸發(fā)器:

create trigger person_trigger_delete AFTER DELETE on person for each row
begin set @x = "trigger DELETE";
DELETE FROM person_ex where person_ex.id = old.id;
end;

3.測試SQL代碼:

INSERT INTO person (id,NAME,sex) VALUES (1,'chigo','M') ;
INSERT INTO person (id,NAME,sex) VALUES (2,'Tony','F') ;

UPDATE person
SET NAME = 'vara' , sex = 'F' WHERE id = 1 ;
UPDATE person
SET NAME = 'Tony' , sex = 'M' WHERE id = 1 ;
UPDATE person
SET NAME = 'vara' , sex = 'M' WHERE id = 1 ;

DELETE FROM person WHERE id = 1 ;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容