我有一个不时需要更新的数据库。 更新运行时也可能发生新数据。
在MySQL中有一个选项
INSERT INTO IGNORE
我在T-SQL中找不到这样的东西。 没有问题更新ID 1-4,但是有一个ID 5的新记录。 UPDATE查询无法在此处运行。 当我尝试再次插入所有数据时,我收到了DUPLICATE KEY错误。
其他信息: 我忘了说我的数据来自外部资源。我调用API来从中获取数据。从那里我必须将这些数据插入我的数据库。
我必须承认我并不理解MERGE。所以我现在的解决方案是首先使用TRUNCATE,然后再次插入所有数据。 不是最好的解决方案,但MERGE工作,到目前为止我理解它,有两个表。但我只有一张桌子。并且临时创建一个表来使用MERGE,然后放下那个表在我的眼中对我的小桌子有200个记录。
答案 0 :(得分:4)
您可以使用MERGE
关键字。基本上,您需要指定与目标表连接数据源的列,并根据它是匹配(现有记录)还是不匹配(新记录),运行UPDATE
或INSERT
。
答案 1 :(得分:0)
存储过程是一个选项吗?
CREATE PROCEDURE dbo.Testing (@ID int, @Field1 varchar(20))
AS
BEGIN
UPDATE tblTesting
SET Field1 = @Field1
WHERE ID = @ID
IF @@ROWCOUNT = 0
INSERT INTO tblTesting (ID, Field1) SELECT @ID, @Field1
END