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

SQL Server:删除前需要多个条件,sql,tsql,sql-server-2008,Sql,Tsql,Sql Server 2008,在删除某个表中的行时,我只希望在引用至少两个特定列时才允许删除 例如: Delete From TransTable /* delete fails - need where condition*/ Delete From Transtable WHERE TransID = @TransID AND UserID = @UserID /* rows deleted */ 我这样做的原因是向删除进程添加第二层安全性。这是可能的吗?如果@TransID或@UserID为空,这将删除零行。所有与

在删除某个表中的行时,我只希望在引用至少两个特定列时才允许删除

例如:

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

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

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

如果@TransID或@UserID为空,这将删除零行。所有与null的比较结果都是错误的(对于不可避免的学究,严格来说,这是未知的,但实际上这里是错误的)

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


除非您的代码如上所述对此进行限制,否则无法强制执行2个条件。任何人都不能直接使用SQL工具或类似工具进行删除,也不能绕过您的检查。

完全正确。通过存储过程控制数据访问,然后您可以轻松地要求提供这些参数,还可以为其值指定有效域。如果您允许从表中进行临时删除,祝您好运!谢谢gbn和Aaron。我会从表中进行临时删除,但可能我不能被信任!通过存储过程以独占方式删除是有意义的。我希望有一种方法可以把“规则”摆在桌面上。