SQL: Как вставить строку, если таблица пуста, иначе ничего не делать? - PullRequest
1 голос
/ 06 января 2012

У меня есть таблица, в которой всегда 0 или 1 строка. Я хочу написать скрипт, который будет вставлять строку, если она пуста, и ничего не делать, если есть строка. Я попробовал это:

SELECT * CASE WHEN (SELECT COUNT(*) FROM table < 0)
   THEN (INSERT INTO table (a, b, c, d) VALUES ('a', 'b', 'c', 'd'))
   END CASE
FROM table;

Но я получаю:

Ключевое слово FROM не найдено там, где ожидается.

Кажется, это должно быть довольно просто, что я делаю не так?

Ответы [ 2 ]

13 голосов
/ 06 января 2012

Вы можете реструктурировать запрос в select / insert и использовать ключевые слова not exists, чтобы проверить, пуста ли таблица, например:

insert table (a, b, c, d)
select 'a', 'b', 'c', 'd'
from dual
where not exists (select 1 from table)

или, если это должно быть if утверждение, аналогично:

if not exists (select 1 from table)
    insert table (a, b, c, d) values ('a', 'b', 'c', 'd')
0 голосов
/ 07 января 2012

Используйте инструкцию MERGE со вставкой, но без ОБНОВЛЕНИЯ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...