Если вы хотите предотвратить случайное удаление, тогда вы можете иметь фиктивную таблицу, которая объявляет внешний ключ в вашей таблице с помощью ON DELETE NO ACTION
, и добавить в нее одну строку с внешним ключом, совпадающим с вашим 'драгоценным' строка первичного ключа. Таким образом, если родительская строка будет удалена, механизм откажется и выдаст ошибку.
Если вы хотите предотвратить преднамеренное удаление, вам следует полагаться на безопасность (запретить разрешение DELETE для таблицы). Конечно, привилегированные пользователи, имеющие необходимые разрешения, могут удалить строку, не может предотвратить это, и вы не должны пытаться. Поскольку SQL Server не поддерживает безопасность на уровне строк, если вам нужно запретить только определенные строки, вам придется вернуться к чертежу в целом и изменить макет таблицы, чтобы сохранить все строки, которые должны быть отклонены. в одной таблице, а строки, которые разрешено удалять, хранятся в другой таблице.
Другие решения (например, триггеры), в конечном счете, будут вариацией этих тем, и вам действительно необходимо решить вопрос, хотите ли вы предотвратить случайное удаление (решаемо) или преднамеренное удаление (неразрешимое, их база данных, а не ваша).