gpt4 book ai didi

sql-server - 从静态 INSERT 语句覆盖重复行

转载 作者:行者123 更新时间:2023-12-05 07:31:52 26 4
gpt4 key购买 nike

我将使用 INSERT 语句插入行,其中的值是静态的并且不在数据库中。像这样的东西:

INSERT INTO MY_TABLE (ID, NAME) VALUES(123, 'Herbert')

如果 MY_TABLE 已经有一行 ID 等于 123NAMEHerbie ,如何将新数据保留在 INSERT 语句中(123Herbert)并丢弃 中已有的数据MY_TABLE(123Herbie)?

我知道 SQL Server IGNORE_DUP_KEY 设置,但我认为它会忽略 INSERT 语句中的数据并保留表中已有的数据。我想要相反的。

更新

澄清一下,我不想更改 INSERT 语句。我想保持不变。我想以某种方式在服务器端完成工作。基本上 IGNORE_DUP_KEY 是我想要的,只是它保留了错误的数据。

更新2

我认为我想做的与提到的重复问题不同。我根本不想更改 INSERT 语句。我想在后端使用我不知道的 SQL Server 设置或创建触发器来处理它。

最佳答案

在我看来,您有 2 个选择。

首先,您可以从 ID = 您的 ID 所在的表中删除。这样做时不必担心 ID 是否已经存在,因为删除不存在的记录不会在 SQL 中产生错误。如果您坚持只使用 Insert 语句,那么这是您的选择。

添加

Delete MY_TABLE where ID = 123
INSERT INTO MY_TABLE (ID, NAME) VALUES(123, 'Herbert')

其次,您可以添加一个“检查”以查看该 ID 是否已存在,并根据该 ID 是否已存在有一个 Insert 语句和一个 Update 语句。

If(select ID from MY_TABLE where ID = 123)
Update MY_TABLE
Set NAME = 'Herbert'
Where ID = 123
ELSE
INSERT INTO MY_TABLE (ID, NAME) VALUES(123, 'Herbert')

关于sql-server - 从静态 INSERT 语句覆盖重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51620031/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com