【问题标题】:Oracle - Conditional Insert with SequenceOracle - 带序列的条件插入
【发布时间】:2021-03-03 01:58:11
【问题描述】:

我知道序列不能用在这些地方。

对于SELECT 声明:

  1. 在 WHERE 子句中
  2. 在 GROUP BY 或 ORDER BY 子句中
  3. 在 DISTINCT 子句中
  4. 与 UNION 或 INTERSECT 或 MINUS 一起使用

在子查询中

请通过条件插入帮助实现以下要求。 目标是 - 如果名称不存在于表中,则需要插入,因为它受序列作为主键保护。

INSERT 
WHEN EXISTS (SELECT 0 FROM TABLE1 WHERE NAME = 'DUPLICATE_NAME_TEST') 
THEN
INTO TABLE1 (KEY, NAME, GROUP) 
SELECT TESTSEQ.NEXTVAL, 'DUPLICATE_NAME_TEST', 30 FROM DUAL;

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    SQL 没有 INSERT WHEN 构造。它确实有WHERE。所以你打算这样:

    INSERT INTO TABLE1 (NAME, GROUP)
        SELECT 'DUPLICATE_NAME_TEST', 30
        FROM DUAL
        WHERE NOT EXISTS (SELECT 1 FROM TABLE1 T1 WHERE T1.NAME = 'DUPLICATE_NAME_TEST');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      • 2012-02-12
      • 2015-08-20
      • 1970-01-01
      • 2013-06-17
      • 1970-01-01
      • 2014-05-16
      相关资源
      最近更新 更多