当前位置: 首页 > 面试题库 >

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

方和宜
2023-03-14
问题内容

我想将插入查询与“不存在的地方”组合起来,以免违反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子句结合使用吗?)


问题答案:
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;


 类似资料:
  • 问题内容: 我尝试插入新用户(如果用户表中不存在该用户),我尝试了此查询,但收到错误: 如果不存在,如何插入用户? 错误: 谢谢, 问题答案: 用途: 我可以这样写: 但是更好的方法可能只是放入一个唯一索引,以便数据库保护数据:

  • 我有一个我认为是完全琐碎的查询-插入值到一个表中,如果一个值与匹配的ID不存在: 我在where语句周围得到一个错误。为什么?我如何实现我的目标?

  • 我想生成一个sql查询来批量插入一系列表中不存在的行。我当前的设置为每个记录插入创建了一个新的查询,类似于PostgreSQL中WHERE NOT EXISTS in PostgreSQL Gets syntax error中详细介绍的解决方案,但我想将其移动到单个查询以优化性能,因为我当前的设置一次可以生成几百个查询。现在我正在尝试下面添加的示例: Postgres返回以下错误: 问题是,Pos

  • 问题内容: 我从谷歌搜索开始,发现这篇文章讨论了互斥表。 我有一张约有1400万条记录的表。如果我想添加更多相同格式的数据,是否有一种方法可以确保在不使用一对查询的情况下我要插入的记录不存在(即,要检查的一个查询和要插入的一个是结果集是空)? 如果字段上存在约束,是否可以保证该约束将失败? 似乎 只有 一个约束,当我通过php发出插入命令时,脚本就发出了嘶哑的声音。 问题答案: 采用 见http:

  • 问题内容: 我有下表: 如果给定的ID不存在,我想插入具有默认Val的ID。但是,如果它已经存在,我想增加Val的值。 我有以下代码: 并且它可以工作,但是我想用一个SQL语句来完成。我可以吗? 编辑 : 从@ Xikinho90的答案,我的最终代码是 问题答案: 您可以使用插入或替换。 我认为这可以解决问题 您只需要用输入的ID替换数字 谢谢奇科

  • 我有一个具有以下模式的用户集合: 用户将查找用户。名称,必须是唯一的。添加新用户时,我首先执行搜索,如果没有找到这样的用户,我会将新用户文档添加到集合中。搜索用户和添加新用户(如果未找到)的操作不是原子操作,因此,当多个应用程序服务器连接到DB服务器时,可能会同时收到两个具有相同用户名的添加用户请求,从而导致两个添加用户请求都找不到这样的用户,这反过来会导致两个文档具有相同的“user.name”