Как я могу предотвратить удаление строки по умолчанию в MySql? - PullRequest
0 голосов
/ 27 февраля 2011

Как я могу предотвратить удаление строки по умолчанию в MySql?

Предположим, у меня есть запись с 0 id, пользователь не может вставить любую запись со значением 0 id, в некоторых случаях я использую значение строки по умолчанию, чтобы показать настройки по умолчанию. Теперь я хочу запретить удаление этой строки пользователем на уровне базы данных.

Я пытался использовать triger для этого, например, я зарегистрировался перед удалением значения id , если id == 0, то id = 4444444 ... в этой ситуации никакая запись не будет удалена, потому что я установил идентификатор с несуществующим идентификатором строки. Но этот метод не работает;

1 Ответ

2 голосов
/ 27 февраля 2011

Вы можете создать таблицу, в которой используется ограничение внешнего ключа, ссылающееся на столбец идентификатора (при условии, что это первичный ключ вашей таблицы). Затем вставьте строку в эту «дочернюю» таблицу, которая ссылается на ID = 0, и удалите все полномочия обновления / удаления для вашего пользователя из этой дочерней таблицы.

Теперь, если кто-то попытается удалить строку с идентификатором = 0 в «родительской» таблице, произойдет сбой из-за существующей дочерней строки в другой таблице.

Используя этот шаблон, вы можете "защитить" любой идентификатор в родительской таблице от удаления.

...