gpt4 book ai didi

mysql - 如何使用级联?我的不工作

转载 作者:行者123 更新时间:2023-11-29 08:22:56 25 4
gpt4 key购买 nike

这是我的 table ......

 create table c1(id int primary key,name varchar(20));
create table c2(iid int primary key,ename varchar(20),foreign key(iid) references c1(id) on update cascade on delete cascade);

insert into c1 values(1,'a');
insert into c1 values(2,'b');

insert into c2 values(1,'a')
insert into c2 values(2,'b')

update c1 set id=3 where id=1;
update c1 set name='hello' where id=2;

当我更新某些内容时什么也没有发生..

什么是级联,当我在 c1 上更新时,它实际上是否更新了 c2 的表 ID 的值..

我实际上认为上面的更新查询应该更改 c2 的 id 值,其中 id=1...

如果我错了..请告诉我当我更新 c1 时如何更新 c2 中的值...谢谢...

最佳答案

在 MySQL 中,如果存储引擎是 InnoDB,则支持此功能。其他存储引擎(例如 MyISAM)不强制执行该约束(尽管 MySQL 允许“引用”语法,但它没有效果: http://dev.mysql.com/doc/refman/5.7/en/example-foreign-keys.html )。

检查存储引擎,例如 c1 表:

SHOW CREATE TABLE c1

检查默认使用哪个存储引擎:

SHOW VARIABLES LIKE 'storage_engine'

检查外键检查是否实际执行:

SHOW VARIABLES LIKE 'foreign_key_checks'

如果存储引擎不是 InnoDB,您可以将 MyISAM 表转换为 InnoDB,或者(因为这是一个玩具示例)您可以重新创建表。如果重新创建表,您可以在 CREATE TABLE 命令末尾指定存储引擎,也可以在创建表之前设置它,例如

SET storage_engine=MYISAM;

同样,如果foreign_key_checks变量关闭,您可以通过以下方式将其打开:

SET foreign_key_checks=1;

关于mysql - 如何使用级联?我的不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18847204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com