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