INSERT INTO ... VALUES () 当不存在时

INSERT INTO ... VALUES () when not exists

我有插入:

INSERT INTO barrier
(barrier_id,
 usage_id,
 type_id,
 currency_id,
 modified_date,
 version_nr)
VALUES (barrier_seq.nextval,
        (SELECT usage_id
         FROM usages
         WHERE id =
               (SELECT id
                FROM products
                WHERE identifier =
                      (SELECT identifier
                       FROM identifiers
                       WHERE type_id =
                             (SELECT type_id
                              FROM types
                              WHERE NAME = 'New product')
                         AND LOCATION = 'USA')
                  AND status = 'DONE')),
        (SELECT type_id FROM types WHERE name = 'My name'),
        5,
        CURRENT_TIMESTAMP,
        3);

我知道当 INSERT 中有 SELECT 而不是 VALUES() (Oracle insert if not exists statement) 时我可以使用 where not exists。在这种情况下,如果不将此 INSERT ... VALUES() 更改为 INSERT... SELECT 是否有可能?

使用insert . . . select并在SELECT的末尾添加条件:

INSERT INTO barrier (barrier_id, usage_id, type_id, currency_id,  modified_date, version_nr)
    SELECT barrier_seq.nextval, usage_id,
           (SELECT type_id FROM types WHERE name = 'My name'),
           5, CURRENT_TIMESTAMP, 3)
    FROM usages
    WHERE id = (SELECT id
                FROM products
                WHERE identifier =
                      (SELECT identifier
                       FROM identifiers
                       WHERE type_id =
                             (SELECT type_id
                              FROM types
                              WHERE NAME = 'New product'
                             ) AND
                             LOCATION = 'USA'
                      ) AND
                      status = 'DONE'
              ) AND
              NOT EXISTS ( . . . );