建立测试表查看版本信息select version();5.7.22
创建父表drop table if exists models;create table models ( modelid smallint unsigned not null auto_increment, name varchar(40) not null, primary key (modelid));
创建子表drop table if exists orders;create table orders ( id smallint unsigned not null primary key, modelid smallint unsigned not null, description varchar(40), foreign key (modelid) references models (modelid) on delete cascade );
测试测试用例-无父表相应数据,先插入子表insert into orders(id,modelid,description) values (1,1,'a');
结果:执行失败
异常:[2018-07-31 11:08:01] 23000 cannot add or update a child row: a foreign key constraint fails (bov.orders, constraint orders_ibfk_1 foreign key (modelid) references models (modelid) on delete cascade)
原因:通不过on delete cascade 的外键约束检查
测试用例-先插入主表数据,再插入子表数据insert into models(modelid,name) values (1,'a');insert into orders(id,modelid,description) values (1,1,'a');
结果:执行成功
select * from models;1 aselect * from orders;1 1 a
测试用例-父子表都有数据,删除子表数据delete from orders where id = 1;
结果:执行成功
select * from models;1 aselect * from orders;为空
测试用例-父子表都有数据,删除父表书库delete from models where modelid = 1;
结果:执行成功
select * from models;为空select * from orders;为空
测试用例-父子表都有数据,更新子表外键update orders set modelid = 3 where id =1;
结果:执行失败
异常:[2018-07-31 12:33:02] 23000 cannot add or update a child row: a foreign key constraint fails (bov.orders, constraint orders_ibfk_1 foreign key (modelid) references models (modelid) on delete cascade)
原因:通不过on delete cascade 的外键约束检查
测试用例-父子表都有数据,更新父表主键update models set modelid = 2 where modelid =1;
结果:执行失败
异常:[2018-07-31 12:34:24] 23000 cannot delete or update a parent row: a foreign key constraint fails (bov.orders, constraint orders_ibfk_1 foreign key (modelid) references models (modelid) on delete cascade)
原因:通不过on delete cascade 的外键约束检查
测试用例-父子表都有数据,更新子表非外键update orders set description = 'b' where id =1;
结果:执行成功
select * from orders;1 1 b
测试用例-父子表都有数据,更新父表非主键update models set name = 'c' where modelid =1;
结果:执行成功
select * from models;1 c
相关文章:
mysql数据库索引的建立以及性能测试
mysql 高性能压力测试(总结了好久)
相关视频:
数据结构探险之线性表篇
以上就是mysq中l建立测试父表、子表及测试用例归纳总结的详细内容。
