【问题标题】:How to insert a new row to a table only if when same value does not exist, else update the related contents?仅当相同值不存在时如何向表中插入新行,否则更新相关内容?
【发布时间】:2019-02-21 23:28:28
【问题描述】:

表格:

emergency_tab (user_id, emergency_no)

约束 (user_id [primary key])

当收到idno 时,我需要将这些值insert 发送到user_idemergency_no 列中的emergency_tab。如果存在具有相同user_id 的列,我只想更新emergency_no,不需要insert 新行。

我正在使用Visual Studio 2010MS SQL Server 2008 内置在vs10

【问题讨论】:

  • 显示你目前正在处理的代码

标签: sql-server sql-server-2008 visual-studio-2010 insert-update on-duplicate-key


【解决方案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

【讨论】:

    【解决方案2】:

    它正在工作

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      相关资源
      最近更新 更多