【发布时间】:2016-07-28 14:23:04
【问题描述】:
假设我在 SQL Server 中有下表:
MyTable:
IDCol: Val1: Val2:
1 a b
2 c d
...
而且,我只能通过直接 SQL 语句访问/修改它(例如,我不能将文件放在某个位置并告诉它上传该文件)
所以,目前,在我的 C# 代码中,如果我想将值插入到这个表中,我实际上是在编写 SQL,例如:
INSERT INTO MyTable (IDCol, Col1, Col2) Values (.....)
但现在我必须考虑表中已经存在值的可能性,如果存在,则更新该行。
我知道我可以通过Merge 做到这一点,但我如何通过直接 SQL 语句做到这一点?
- 我是否创建一个临时表,进行合并,然后删除它?
- 是否要查询已经匹配的行,更新它们,然后插入剩余的行?
- 是否有某种其他的 SQL 语法来做这样的事情?
而且,如果 #1 是正确的方法,我该如何做到这一点,如果我的程序有 2 个实例正在运行,我不会双重创建同名的临时表?
【问题讨论】:
-
如果您使用 ADO.net 而不是使用 DataAdapters,请检查此链接 msdn.microsoft.com/en-us/library/33y2221y(v=vs.110).aspx
-
很高兴知道,谢谢@rashfmnb,但在这种情况下我不能,我实际上必须编写SQL,就好像它被输入到管理工作室并且没有上传的能力文件到数据库可以看到的地方。
-
在这种情况下,您必须检查数据是否存在,如果存在则运行更新查询,否则运行插入查询
标签: c# sql-server merge insert insert-update