0

我有两个表Table1Table2如果存在行然后删除else使用SQL Server 2014中的SQL Server存储过程插入表

现在我想写一个存储过程,如果记录存在,它将删除该记录,如果该记录不存在,则会插入该记录。

注:表中没有任何主键。我可能需要根据多列创建密钥。

USE lan_db; 
GO 

CREATE PROCEDURE dbo.udm_to_app_invoice 
AS 
    SET NOCOUNT ON; 

    INSERT INTO dbo.dummy3 
     SELECT 
      poc_name, 
      poc_code, 
      salesrep_code, 
      invoice_date, 
      product_name 
     FROM 
      [dbo].[src_nota_fiscal] 
     WHERE 
      LAST_UPDT = (SELECT MAX(last_updt) FROM DBO.SRC_NOTA_FISCAL); 
GO 

回答

1

研究T-SQL IF...ELSE,这可能是最简单的。

IF逻辑表达式
{sql_statement | statement_block}
[ELSE
{sql_statement | statement_block}]

布尔表达式可以是子查询,您可以在其中使用EXISTS运算符。

指定一个子查询来测试是否存在行。

你的问题,在伪SQL答案:

IF EXISTS(<SELECT statement that selects the record>) 
    <DELETE statement> 
ELSE 
    <INSERT statement> 

另一种方法是使用MERGE声明。然而,这是一个繁琐的陈述,国际海事组织并不那么直观。