7

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

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

由于我没有看到它经常使用并且实际上以前从未听说过它,这真的是我想要的解决方案,还是我应该手动执行此操作?

4

2 回答 2

5

两者REPLACE INTOON DUPLICATE KEY建议的替代方案都是来自 MySQL 变体的非标准 SQL。所以你是否使用它取决于 a) 你是否使用 MySQl 和 b) 你是否想绑定到那个变体。

ANSI SQL 定义了一种MERGE更标准的语法,如果它在您的平台上实现的话

于 2012-07-11T08:27:04.020 回答
4

更常见的是使用

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

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

于 2012-07-11T08:20:54.303 回答