我有兩個MySQL表:collections
和privacy_level
。
我定義他們有外鍵關係這樣:MySQL的外鍵'刪除限制'的確切含義'條款
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_level
有level = 2
,name = 'top secret'
但collections.Privacy沒有條目具有privacy = 2
,我可以刪除level = 2
,name = 'top secret'
進入?還是禁止在列寬的基礎上?
感謝您的任何見解。
你的意思是'ON DELETE RESTRICT'與'ON DELETE NO ACTION'相同嗎? – Shafizadeh
@Shafizadeh,閱讀http://www.vertabelo.com/blog/technical-articles/on-delete-restrict-vs-on-delete-no-action –
@Bill,該文章說,沒有行動是相同的RESTRICT在MySQL中,它引用[回到SO](https://stackoverflow.com/questions/5809954/mysql-restrict-and-no-action)來支持他們的聲明... – Code4R7