두 개의 MySQL 테이블이 있습니다 : collections
및 privacy_level
입니다.
나는 같은 외래 키 관계를 정의 :MySQL의 외래 키에 대한 정확한 의미 'delete restrict'절
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
에서 삭제할 수 있습니까?
또는, 내가 이 collections.privacy
에서 행이 privacy_level.level
의 값과 동일한 값을 가지고 경우 privacy_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을 읽으십시오. NO ACTION은 RESTRICT와 같습니다. MySQL에서, 그리고 그것은 그들의 진술을 되돌리기 위해 [SO] (https://stackoverflow.com/questions/5809954/mysql-restrict-and-no-action)을 참조한다 ... – Code4R7