SQL Server:删除前需要多个条件

时间:2011-07-10 20:17:17

标签: sql tsql sql-server-2008

删除某个表中的行时,我想只允许删除,如果至少引用了2个特定列。

例如:

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

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

我这样做的原因是为删除过程添加第二层安全性。这可能吗?

1 个答案:

答案 0 :(得分:3)

如果@TransID或@UserID为NULL,则将删除零行。所有与null的比较都评估为假(严格来说,对于不可避免的学生而言严格地说,但实际上这里是假的)。

但是,对于更复杂的逻辑,例如抛出错误,请使用具有2个必需参数和某些逻辑的存储过程。 (编辑:我会这样做)

除非您的代码如上所述限制,否则无法强制执行2个条件。无论如何,任何人都不能直接使用SQL工具等删除,或绕过你的支票。