gpt4 book ai didi

mysql - MySQL 外键 'on delete restrict' 子句的确切含义

转载 作者:IT老高 更新时间:2023-10-28 12:56:58 26 4
gpt4 key购买 nike

我有两个 MySQL 表:collectionsprivacy_level
我用 外键 关系来定义它们:

CREATE TABLE collections (
coll_id smallint NOT NULL AUTO_INCREMENT UNSIGNED,
name varchar(30) NOT NULL,
privacy tinyint NOT NULL UNSIGNED DEFAULT '0',
PRIMARY KEY(coll_id),
INDEX(privacy),
FOREIGN KEY fk_priv (privacy) REFERENCES privacy_level (level) ON UPDATE CASCADE ON DELETE RESTRICT
) ENGINE=InnoDB;

CREATE TABLE privacy_level (
level tinyint NOT NULL UNSIGNED,
name varchar(20) NOT NULL,
PRIMARY KEY (level)
) ENGINE InnoDB;

我的问题是关于 ON DELETE RESTRICT 子句,我无法从在线手册或谷歌搜索中得到答案。

这是否意味着我可以从不privacy_level 中删除一行?
或者,这是否意味着我不能privacy_level 中删除一行 如果collections.privacy 中删除一行是否具有与 privacy_level.level 中的值相同的值?

也就是说,如果 privacy_levellevel = 2name = 'top secret' 但集合中没有条目。Privacy 有 privacy = 2,我可以删除 level = 2, name = 'top secret' 条目吗?还是在列范围内禁止?

感谢您的任何见解。

最佳答案

ON DELETE RESTRICT 表示如果存在子行,您不能删除给定的父行引用该父行的值。如果父行没有引用子行,则可以删除该父行。

ON DELETE RESTRICT 几乎是多余的语法,因为无论如何这是外键的默认行为。

关于mysql - MySQL 外键 'on delete restrict' 子句的确切含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8072876/

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