Делайте это с помощью реляционной целостности - используйте НЕ , используйте триггеры, поскольку их всегда трудно поддерживать после этого (у них есть свое место, но только не здесь). Целостность отношений сделает все, что вам нужно.
Использование реляционной целостности может быть довольно элегантным, но то, что вам нужно сделать, немного нелогично, так что его легко пропустить.
Создайте таблицу основных таблиц 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]
)
Ограничение будет гарантировать, что строка со значением 1 intID не может быть удалена из таблицы tblMain, поскольку ссылочная целостность таблицы tblGuard требует, чтобы значение 1 существовало в tblMain. Это работает с удаляет и усекает.