在PL / SQL(oracle)中,如果不存在插入行的最简单方法是什么?

我想要类似的东西:

IF NOT EXISTS (SELECT * FROM table WHERE name = 'jonny') THEN
  INSERT INTO table VALUES ("jonny", null);
END IF;

但这不起作用。

注意:此表有2个字段,例如名称 age 。但是只有名称是PK。

最佳答案

INSERT INTO table
SELECT 'jonny', NULL
  FROM dual -- Not Oracle? No need for dual, drop that line
 WHERE NOT EXISTS (SELECT NULL -- canonical way, but you can select
                               -- anything as EXISTS only checks existence
                     FROM table
                    WHERE name = 'jonny'
                  )

09-11 05:28