在插入/更新或删除数据库之前检查数据库的最佳解决方案

时间:2018-08-12 23:45:39

标签: sql-server sql-server-2016

想知道什么是在INSERT / UPDATE或DELETE记录之前检查记录是否存在的最佳方法。

我认为MERGE是一种最佳方法,但我读到我可能不是最好的解决方案,因为它们存在错误并且还会影响性能(现在,我读过的这些文章可能是较旧的问题)

我们正在使用SQL SERVER2016。因此,与此版本相关的任何内容都会有所帮助?

我还认为,根据PK和返回的值检查数据库,我可以执行插入或更新

例如 如果(表中的计数为0),则插入else更新。

我只是想找到处理我们日常交易的最佳方法。我们的应用程序每小时平均处理200,000条记录。

谢谢

1 个答案:

答案 0 :(得分:0)

我将创建一个存储过程,以在插入之前检查记录是否存在,例如(假设您已经自动生成了主键的标识)

创建PROC PR_Insert_Something @名字 @姓 如 开始 开始TRAN 如果不存在(从表A中选择* FirstName = @FirstName AND LastName = @LastName) 开始 插入表A(名字,姓氏) VALUES(@ FIRSTNAME,@ LASTNAME) 提交交易 结束 其他 开始 RAISERROR()<-如果不确定在此做什么,请查找RAISERROR 回滚交易 结束 结束 开始;

总是更好地从应用程序动态地执行SQ​​L操作。