У меня есть две таблицы 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
, и я не смог получить ответ из онлайн-руководства или поиска в Google.
Значит ли это, что я могу никогда удалить строку из privacy_level
?
Или это означает, что я не могу удалить строку из privacy_level
, если строка из collections.privacy
имеет значение, совпадающее со значением в privacy_level.level
?
То есть, если privacy_level
имеет level = 2
, name = 'top secret'
, но нет записей в коллекциях. У конфиденциальности есть privacy = 2
, могу ли я удалить запись level = 2
, name = 'top secret'
? Или это запрещено на широкой основе?
Спасибо за понимание.