mysql 觸發器使用

觸發器說明

案例1:

觸發器


DELIMITER $$
/**
觸發器功能:
當test0表添加一條數據時,test1表中也添加一條相同的數據
觸發器名稱:test0_to_test1_insert   表1 test0  表2 test1
**/
DROP TRIGGER test0_to_test1_insert $$
CREATE
    TRIGGER test0_to_test1_insert AFTER INSERT
    ON test0
    FOR EACH ROW BEGIN
	-- INSERT INTO test1 (name,fid) VALUES ((SELECT name FROM test0 ORDER BY id DESC LIMIT 1),(SELECT id FROM test0 ORDER BY id DESC LIMIT 1));
	 INSERT INTO test1 (fid,name) VALUES (new.id,new.name);
    END$$

DELIMITER ;

/**
觸發器功能:
當test0表刪除一條數據時,test1表中也刪除一條相同的數據
觸發器名稱:test0_to_test1_delete   表1 test0  表2 test1
**/

DELIMITER $$
 DROP TRIGGER test0_to_test1_delete $$
CREATE TRIGGER test0_to_test1_delete BEFORE DELETE
    ON test0
    FOR EACH ROW BEGIN
	DELETE FROM test1 where fid=old.id;
    END$$
 
DELIMITER ;

/**
觸發器功能:
當test0表更新一條數據時,test1表中也更新一條相同的數據
觸發器名稱:test0_to_test1_update   表1 test0  表2 test1
**/
DELIMITER $$
 DROP TRIGGER test0_to_test1_update $$
CREATE TRIGGER test0_to_test1_update BEFORE UPDATE
    ON test0
    FOR EACH ROW BEGIN
	UPDATE test1 set name=new.name  where fid=new.id;
    END$$
 
DELIMITER ;

測試sql:

/** 查詢觸發器**/
SELECT * FROM information_schema.`TRIGGERS`

/**添加**/
INSERT INTO test0 (age,name) VALUES ('58','66666');

/**刪除**/
DELETE FROM  test0 WHERE id=18 

/**更新**/
UPDATE  test0 SET name ='測試更新記錄' WHERE id=19

/**查詢**/
SELECT name FROM test0 ORDER BY id DESC LIMIT 1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章