Сделайте это реляционной целостностью - делать НЕ использования триггеров, как они всегда являются настоящей болью, чтобы поддерживать их (они имеют свое место, а не здесь). egrity сделает все, что вам нужно.
Использование реляционной целостности может быть довольно элегантным, но то, что вам нужно сделать, является слегка контринтуитивным, поэтому его легко пропустить.
Создайте основную таблицу, tblMain, с числовым первичным ключом.Для простоты я проверил это с таблицей с одной колонкой, intID, и я заполнил ее значениями 0,1 и 2.
Далее создайте вторую таблицу tblGuard с таким же числовым первичным ключом. Я добавил одну строку в эту таблицу, значение 1.
Теперь бит обратной логики. Создание внешнего ключа на tblGuard таблице , которые ссылаются на tblMain таблицу
ALTER TABLE [dbo].[tblGuard] ADD
CONSTRAINT [FK_tblGuard_tblMain] FOREIGN KEY
(
[intID]
) REFERENCES [dbo].[tblMain] (
[intID]
)
Ограничение будет гарантировать, что строка со значением intID 1 не может быть удален из таблицы tblMain, так как таблица tblGuard ссылочной целостности требует, чтобы значения 1 существует в tblMain. Это работает с удалением и усечением.
Почему вы не хотите устанавливать разрешения пользователя? – SLaks
Вероятно, это не очень хороший ответ, но его база данных с единственным пользователем-администратором – Belliez