【问题标题】:If row exists then delete else Insert into a table using SQL Server stored procedures in SQL Server 2014如果行存在则删除否则使用 SQL Server 2014 中的 SQL Server 存储过程插入表
【发布时间】:2017-07-02 20:08:34
【问题描述】:

我有两张桌子Table1Table2

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

注意:我的表中没有任何主键。我可能需要根据多列创建一个键。

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

【问题讨论】:

    标签: sql-server stored-procedures sql-server-2014 sql-insert sql-delete


    【解决方案1】:

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

    IF 布尔表达式
    { sql_statement |语句块}
    [ 其他
    { sql_statement |语句块}]

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

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

    你的问题,伪SQL的答案:

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

    另一种方法是使用MERGE 语句。然而,这是一个繁琐的声明,而且 IMO 并不那么直观。

    【讨论】:

      猜你喜欢
      • 2015-03-02
      • 1970-01-01
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 2011-09-01
      • 1970-01-01
      • 2013-11-07
      相关资源
      最近更新 更多