仅当相同的值不存在时,如何向表中插入新行,否则更新相关内容?

问题描述 投票:0回答:2

表:

emergency_tab(user_idemergency_no

约束(user_id [primary key])

当收到idno时,我要求insertuser_id中对emergency_noemergency_tab列的值。如果存在一个具有相同user_id的列,我只想更新emergency_no只需要insert新行。

我在Visual Studio 2010中使用MS SQL Server 2008vs10

sql-server sql-server-2008 visual-studio-2010 insert-update on-duplicate-key
2个回答
0
投票

这是工作

 IF (SELECT COUNT(*) FROM emergency_tab WHERE user_id='?')<>0
    BEGIN
         --UPDATE
    END 

ELSE    
     BEGIN
       --INSERT
     END

1
投票

我相信这被称为“upsert”,你可以使用MERGE关键字,例如:

MERGE [devLaserViso].[dbo].[Machine] t WITH (HOLDLOCK) 
USING [devLaserViso].[dbo].[TempMachine] s
ON (s.MachineName = t.MachineName)
WHEN MATCHED THEN 
    UPDATE SET t.MachineName = s.MachineName,
               t.ProgramName =s.ProgramName
WHEN NOT MATCHED BY TARGET THEN 
    INSERT (MachineName,ProgramName) VALUES (s.MachineName, s.ProgramName);

来自https://stackoverflow.com/a/50232866

© www.soinside.com 2019 - 2024. All rights reserved.