10触发器
九、触发器
CREATE DATABASE d;
USE d;
--创建d1,d2,d3,d4四个空表,装触发时的数据
--表1
CREATE TABLE d1			
(
	id TINYINT UNSIGNED NOT NULL,
	score INT UNSIGNED NOT NULL
)ENGINE=MYISAM  AUTO_INCREMENT=1  DEFAULT CHARSET=utf8;
--表2
CREATE TABLE d2
(
	id TINYINT UNSIGNED NOT NULL,
	score INT UNSIGNED NOT NULL
)ENGINE=MYISAM  AUTO_INCREMENT=1  DEFAULT CHARSET=utf8;
--表3
CREATE TABLE d3
(
	id TINYINT UNSIGNED NOT NULL,
	score INT UNSIGNED NOT NULL
)ENGINE=MYISAM  AUTO_INCREMENT=1  DEFAULT CHARSET=utf8;
--表4
CREATE TABLE d4
(
	id TINYINT UNSIGNED NOT NULL,
	score INT UNSIGNED NOT NULL
)ENGINE=MYISAM  AUTO_INCREMENT=1  DEFAULT CHARSET=utf8;
--创建触发器
格式:create trigger trigger_name  trigger_time(before/after) trigger_event(insert/update/delete)
on  tablename(要进行操作的表) for each row(此句存在,才有new和old,如下)
insert update delete
old null old.data old.data
new nwe.data new.data null
--创建插入触发器
DELIMITER //
CREATE TRIGGER t BEFORE INSERT ON d1 FOR EACH ROW
BEGIN
	INSERT INTO d2  VALUE(new.id,new.score);   --向d1插入数据时,并将新数据插入到d2
END//
DELIMITER ;
--创建修改触发器
DELIMITER //
CREATE TRIGGER t2 BEFORE UPDATE ON d2 FOR EACH ROW
BEGIN
	INSERT INTO d3  VALUE(old.id,old.score);  --修改d2数据时,将原有的数据插入到d3
	INSERT INTO d4  VALUE(new.id,new.score);  --将新数据插入到d4
END//
DELIMITER ;
----创建删除触发器
DELIMITER //
CREATE TRIGGER t3 BEFORE DELETE ON d3 FOR EACH ROW
BEGIN
	INSERT INTO d1  VALUE(old.id,old.score);  --删除d3数据时,将原有的数据插入到d1
END//
DELIMITER ;
--查看各表数据
SELECT * FROM d1;
SELECT * FROM d2;
SELECT * FROM d3;
SELECT * FROM d4;
--向d1插入数据
INSERT INTO d1 VALUES(1,60),(2,70),(3,80),(4,90);
--修改d2的数据
UPDATE d2 SET id=5,score=20 WHERE id=1;
UPDATE d2 SET id=6,score=30 WHERE id=2;
UPDATE d2 SET id=7,score=40 WHERE id=3;
UPDATE d2 SET id=8,score=50 WHERE id=4;
--删除d3的某些数据
DELETE FROM d3 WHERE id=1;
--删除触发器
DROP TRIGGER t2;
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号