SQL Server: требуется несколько условий перед удалением - PullRequest
1 голос
/ 11 июля 2011

При удалении строк в определенной таблице я хотел бы разрешить удаление , только если на есть ссылки хотя бы на 2 конкретных столбца.

Например:

Delete From TransTable
/* delete fails - need where condition*/

Delete From Transtable
WHERE TransID = @TransID AND UserID = @UserID
/* rows deleted */

Моя причина для этого - добавить второй уровень безопасности в процесс удаления.Возможно ли это?

1 Ответ

3 голосов
/ 11 июля 2011

Если @TransID или @UserID равны NULL, это приведет к удалению нулевых строк.Все сравнения с нулем оцениваются как ложные (строго неизвестно, для неизбежных педантов, но здесь это практически ложно).

Однако для более сложной логики, такой как выдача ошибки, используется хранимая процедура с 2 обязательнымипараметры и немного логики.(Правка: я бы сделал это)

Невозможно применить 2 условия, если ваш код не ограничивает это, как указано выше.Никто не должен быть в состоянии УДАЛИТЬ в любом случае непосредственно с помощью инструментов SQL или тому подобное, или обходя ваши проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...