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