【发布时间】:2014-08-11 06:24:42
【问题描述】:
谁能告诉我这条 SQL 语句有什么问题?
const string updateStatement = " IF NOT EXISTS(SELECT * FROM BankAccount WHERE ac_no = @ACNumber AND deleted IS NULL) " +
" UPDATE BankAccount SET BankAccount.deleted = NULL WHERE ac_no = @ACNumber";
在这里,我正在尝试恢复已删除的银行帐户记录(逻辑删除的记录)。即使IF NOT EXISTS() 部分没有返回任何记录UPDATE 也没有发生!
表格
BankAccount [ac_no(pk), emp_id, ac_name, bank_name, emp_name, status, deleted]
编辑:
在恢复银行帐户之前,系统应检查是否为该员工输入了任何其他银行帐户。如果同一员工有另一个银行账户,则不应进行恢复,因为在任何给定时间,员工都应该只有一个银行账户。
【问题讨论】:
-
给我们看一些数据怎么样
-
我觉得你的逻辑有问题,你应该检查
IF EXISTS .. deleted IS NOT NULL -
@Satya,帖子已更新。谢谢。
-
您不需要检查帐号,因为要求是检查emp_id。所以请检查 Emp_Id,然后只更新该员工的帐户。
标签: sql sql-server database exists