trig_frkey2.inc

来自「这个文件是windows mysql源码」· INC 代码 · 共 245 行

INC
245
字号
################################################################## This file inclde tests that address the foreign key cases of# the following requirements since they are specific to innodb.# Other test cases for these requirements are included in the# triggers_master.test file.#################################################################--disable_abort_on_error# OBN - The following tests are disabled until triggers are supported with forign#       keys in innodb (foreign keys tests dispabled - bug 11472)##################################################################################Section x.x.x.3# Test case: Similar to 3.5.10.5 but with ten tables to see if multiple triggers#            can be executed at oncelet $message= Testcase x.x.x.3:;--source include/show_msg.inc	--disable_warnings	DROP TABLE IF EXISTS t1, t2;	--enable_warnings	eval CREATE TABLE t0 (col1 char(50)) ENGINE=$engine_type;	eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50),		PRIMARY KEY (id)) ENGINE=$engine_type;	eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT, INDEX par_ind		(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)		ON DELETE SET NULL) ENGINE=$engine_type;	eval CREATE TABLE t3 (id INT PRIMARY KEY, f_id INT, INDEX par_ind		(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)		ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;	eval CREATE TABLE t4 (id INT PRIMARY KEY, f_id INT, INDEX par_ind		(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)		ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;	eval CREATE TABLE t5 (id INT PRIMARY KEY, f_id INT, INDEX par_ind		(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)		ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;	eval CREATE TABLE t6 (id INT PRIMARY KEY, f_id INT, INDEX par_ind		(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)		ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;	eval CREATE TABLE t7 (id INT PRIMARY KEY, f_id INT, INDEX par_ind		(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)		ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;	eval CREATE TABLE t8 (id INT PRIMARY KEY, f_id INT, INDEX par_ind		(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)		ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;	eval CREATE TABLE t9 (id INT PRIMARY KEY, f_id INT, INDEX par_ind		(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)		ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;	eval CREATE TABLE t10(id INT PRIMARY KEY, f_id INT, INDEX par_ind		(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)		ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;	eval CREATE TABLE t11(id INT PRIMARY KEY, f_id INT, INDEX par_ind		(f_id), col1 char(50), FOREIGN KEY (f_id) REFERENCES t1(id)		ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;	create trigger tr1 after update on t2 for each row		insert into t0 values ('tr_t2');	create trigger tr2 after update on t3 for each row		insert into t0 values ('tr_t3');	create trigger tr3 after update on t4 for each row		insert into t0 values ('tr_t4');	create trigger tr3 after update on t5 for each row		insert into t0 values ('tr_t5');	create trigger tr4 after update on t6 for each row		insert into t0 values ('tr_t6');	create trigger tr5 after update on t7 for each row		insert into t0 values ('tr_t7');	create trigger tr5 after update on t8 for each row		insert into t0 values ('tr_t8');	create trigger tr6 after update on t9 for each row		insert into t0 values ('tr_t9');	create trigger tr7 after update on t10 for each row		insert into t0 values ('tr_t10');	create trigger tr8 after update on t11 for each row		insert into t0 values ('tr_t11');	insert into t1 values (1,'Department A');	insert into t1 values (2,'Department B');	insert into t1 values (3,'Department C');	insert into t2 values (1,2,'Employee');	insert into t3 values (1,2,'Employee');	insert into t4 values (1,2,'Employee');	insert into t5 values (1,2,'Employee');	insert into t6 values (1,2,'Employee');	insert into t7 values (1,2,'Employee');	insert into t8 values (1,2,'Employee');	insert into t9 values (1,2,'Employee');	insert into t10 values (1,2,'Employee');	insert into t11 values (1,2,'Employee');	select * from t1;	select * from t2;	select * from t3;	select * from t4;	select * from t5;	select * from t6;	select * from t7;	select * from t8;	select * from t9;	select * from t10;	select * from t11;	delete from t1 where id=2;	select * from t1;	select * from t2;	select * from t3;	select * from t4;	select * from t5;	select * from t6;	select * from t7;	select * from t8;	select * from t9;	select * from t10;	select * from t11;	select * from t0;# Cleanup	drop trigger tr1;	drop trigger tr2;	drop trigger tr3;	drop trigger tr4;	drop trigger tr5;	drop trigger tr6;	drop trigger tr7;	drop trigger tr8;	drop trigger tr9;	drop trigger tr10;	drop table t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t1,t0;#Section 3.5.10.5# Test case: Ensure that every trigger that should be activated by every possible#            type of implicit update of its subject table (e.g. a FOREIGN KEY SET#            DEFAULT action or an UPDATE of a view based on the subject table)#            is indeed activated correctly.let $message= Testcase 3.5.10.5 (foreign keys):;--source include/show_msg.inc	--disable_warnings	DROP TABLE IF EXISTS t1, t2;	--enable_warnings	eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50),		PRIMARY KEY (id)) ENGINE=$engine_type;	eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT,		INDEX par_ind (f_id), col1 char(50),		FOREIGN KEY (f_id) REFERENCES t1(id)		ON DELETE SET NULL ON UPDATE CASCADE) ENGINE=$engine_type;	create trigger tr_t2 after update on t2		for each row set @counter=@counter+1;	insert into t1 values (1,'Department A');	insert into t1 values (2,'Department B');	insert into t1 values (3,'Department C');	insert into t2 values (1,2,'Emp 1');	insert into t2 values (2,2,'Emp 2');	insert into t2 values (3,2,'Emp 3');	insert into t2 values (4,2,'Emp 4');	insert into t2 values (5,2,'Emp 5');	insert into t2 values (6,3,'Emp 6');	set @counter=0;	select * from t1;	select * from t2;	select @counter;	update t1 set id=4 where id=3;	select * from t1;	select * from t2;	select @counter;	delete from t1 where id=2;	select * from t1;	select * from t2;	select @counter;# This is to verify that the trigger works when updated directly	update t2 set col1='Emp 5a' where id=5;	select * from t2;	select @counter;# Cleanup	drop trigger tr_t2;	drop table t2, t1;#Section 3.5.10.6# Test case: Ensure that every trigger that should be activated by every possible#            type of implicit deletion from its subject table (e.g. a FOREIGN KEY#            CASCADE action or a DELETE from a view based on the subject table)#            is indeed activated correctly.let $message= Testcase 3.5.10.6 (foreign keys):;--source include/show_msg.inc	--disable_warnings	DROP TABLE IF EXISTS t1, t2;	--enable_warnings		eval CREATE TABLE t1 (id INT NOT NULL, col1 char(50),		PRIMARY KEY (id)) ENGINE=$engine_type;	eval CREATE TABLE t2 (id INT PRIMARY KEY, f_id INT,		INDEX par_ind (f_id), col1 char(50),		FOREIGN KEY (f_id) REFERENCES t1(id)		ON DELETE CASCADE) ENGINE=$engine_type;	create trigger tr_t2 before delete on t2		for each row set @counter=@counter+1;	insert into t1 values (1,'Department A');	insert into t1 values (2,'Department B');	insert into t1 values (3,'Department C');	insert into t2 values (1,2,'Emp 1');	insert into t2 values (2,2,'Emp 2');	insert into t2 values (3,2,'Emp 3');	insert into t2 values (4,2,'Emp 4');	insert into t2 values (5,2,'Emp 5');	insert into t2 values (6,3,'Emp 6');	set @counter=0;	select * from t1;	select * from t2;	select @counter;	delete from t1 where id=2;	select * from t1;	select * from t2;	select @counter;# This is to verify that the trigger works when deleted directly	delete from t2 where id=6;	select * from t2;	select @counter;# Cleanup	drop trigger tr_t2;	drop table t2, t1;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?