gpt4 book ai didi

sql - 如何在 T-SQL 中编写简单的插入或更新?

转载 作者:行者123 更新时间:2023-12-02 08:52:46 27 4
gpt4 key购买 nike

我有一个进程,我不想跟踪某个进程是创建还是更新。跟踪会很复杂。我想执行创建或更新。架构就像...

col1 varchar() (PK)
col2 varchar() (PK)
col3 varchar() (PK)
col4 varchar()

我正在考虑做什么

TRY
{
INSERT ...
}
CATCH(DuplicateKeyException)
{
UPDATE ...
}

你有什么建议?


我想确保我理解其他得票最高的答案。给定我的架构,更新总是发生(即使使用插入),但插入仅发生在不存在的地方?

 //UPSERT
INSERT INTO [table]
SELECT [col1] = @col1, [col2] = @col2, [col3] = @col3, [col4] = @col4
FROM [table]
WHERE NOT EXISTS (
-- race condition risk here?
SELECT 1
FROM [table]
WHERE [col1] = @col1
AND [col2] = @col2
AND [col3] = @col3
)

UPDATE [table]
SET [col4] = @col4
WHERE [col1] = @col1
AND [col2] = @col2
AND [col3] = @col3

最佳答案

update table1 set col1=1,col2=2,col3=3 where a=1
if @@ROWCOUNT=0
insert into table1 (col1,col2,col3) values (1,2,3)

我认为它比先检查是否存在要快。

关于sql - 如何在 T-SQL 中编写简单的插入或更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7262234/

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