У меня есть две таблицы 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'
? Или это запрещено на основе столбцов?
Спасибо за понимание.