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 a select * from Orders; 1 1 a
delete from Orders where id = 1;
结果:执行成功
select * from Models; 1 a select * 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
相关文章:
相关视频:
以上就是Mysq中l建立测试父表、子表及测试用例归纳总结的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号