REPLACE INTO是一个好的做法吗?

时间:2012-07-11 08:18:49

标签: sql vb.net sql-server-2008 sql-server-2005 replace

我需要一个更新或创建数据库条目的SQL查询(如果某个客户尚不存在)。我在互联网上找到了当前的解决方案:

command.CommandText = "REPLACE INTO [Resource_Tracer].[dbo].[Customer](CustomerName, CustomerID) VALUES (@CustomerName, @CustomerID)"

由于我没有看到它经常使用,实际上从未听过它,这真的是我想要的解决方案,还是我应该手动完成?

2 个答案:

答案 0 :(得分:5)

建议的REPLACE INTOON DUPLICATE KEY备选方案都是MySQL变体的非标准SQL。因此,您是否使用它取决于a)您是否使用MySQl和b)您是否想要与该变体绑定。

ANSI SQL定义了MERGE语法,如果在您的平台上实现则更为标准

答案 1 :(得分:2)

使用

更常见
INSERT INTO table col1) VALUES (1)
ON DUPLICATE KEY UPDATE col1=VALUES(Col1)

replace into实际上会删除重复的条目并插入一个新条目。