admin

我该如何在不存在的地方插入?

sql

我想将插入查询与“不存在的地方”组合起来,以免违反PK约束。但是,如下所示的语法给我一个Incorrect syntax near the keyword 'WHERE'错误-

INSERT INTO myTable(columns...)
VALUES(values...)
WHERE NOT EXISTS
   (SELECT *
    FROM myTable
    WHERE pk_part1 = value1,
        AND pk_part2 = value2)

我该怎么做?

(通常,您可以将插入内容与where子句结合使用吗?)


阅读 169

收藏
2021-05-10

共1个答案

admin

INSERT INTO myTable(columns...)
Select values...
WHERE NOT EXISTS
   (SELECT *
    FROM myTable
    WHERE pk_part1 = value1,
        AND pk_part2 = value2)

编辑: 阅读马丁斯链接后,如果承认,最好的解决方案是:

BEGIN TRY
    INSERT INTO myTable(columns...)
    values( values...)
END TRY
BEGIN CATCH
    IF ERROR_NUMBER() <> 2627
      RAISERROR etc
END CATCH;
2021-05-10