【发布时间】:2011-12-25 18:01:15
【问题描述】:
我有两个 MySQL 表:collections 和 privacy_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 中的一行具有与@ 中的值相同的值987654328@?
也就是说,如果privacy_level 有level = 2、name = 'top secret' 但集合中没有条目。隐私有privacy = 2,我可以删除level = 2、name = 'top secret' 条目吗?还是在列范围内禁止?
感谢您的任何见解。
【问题讨论】:
标签: mysql foreign-keys