删除某个表中的行时,我想只允许删除,如果至少引用了2个特定列。
例如:
Delete From TransTable
/* delete fails - need where condition*/
Delete From Transtable
WHERE TransID = @TransID AND UserID = @UserID
/* rows deleted */
我这样做的原因是为删除过程添加第二层安全性。这可能吗?
答案 0 :(得分:3)
如果@TransID或@UserID为NULL,则将删除零行。所有与null的比较都评估为假(严格来说,对于不可避免的学生而言严格地说,但实际上这里是假的)。
但是,对于更复杂的逻辑,例如抛出错误,请使用具有2个必需参数和某些逻辑的存储过程。 (编辑:我会这样做)
除非您的代码如上所述限制,否则无法强制执行2个条件。无论如何,任何人都不能直接使用SQL工具等删除,或绕过你的支票。