我需要一个可以更新或创建数据库条目的 SQL 查询(如果某个客户还不存在)。我在互联网上找到了当前的解决方案:
command.CommandText = "REPLACE INTO [Resource_Tracer].[dbo].[Customer](CustomerName, CustomerID) VALUES (@CustomerName, @CustomerID)"
由于我没有看到它经常使用并且实际上以前从未听说过它,这真的是我想要的解决方案,还是我应该手动执行此操作?
我需要一个可以更新或创建数据库条目的 SQL 查询(如果某个客户还不存在)。我在互联网上找到了当前的解决方案:
command.CommandText = "REPLACE INTO [Resource_Tracer].[dbo].[Customer](CustomerName, CustomerID) VALUES (@CustomerName, @CustomerID)"
由于我没有看到它经常使用并且实际上以前从未听说过它,这真的是我想要的解决方案,还是我应该手动执行此操作?
两者REPLACE INTO
和ON DUPLICATE KEY
建议的替代方案都是来自 MySQL 变体的非标准 SQL。所以你是否使用它取决于 a) 你是否使用 MySQl 和 b) 你是否想绑定到那个变体。
ANSI SQL 定义了一种MERGE
更标准的语法,如果它在您的平台上实现的话
更常见的是使用
INSERT INTO table col1) VALUES (1)
ON DUPLICATE KEY UPDATE col1=VALUES(Col1)
replace into
实际上删除了一个重复的条目并插入了一个新条目。