Страницы

Поиск по вопросам

пятница, 14 февраля 2020 г.

Как вставить строку в таблицу, если ее там еще нет

#sql #sql_server #oracle


я знаю два варианта для выполнения INSERT IF NOT EXIST:

IF NOT EXISTS(SELECT * FROM sys where name='web')
  BEGIN
    INSERT INTO sys (name, value) VALUES ('web', '14')
  END


и 

INSERT IF NOT EXISTS INTO sys (name, value) VALUES ('web', '14')


Для оракла ни один не подходит. Помогите с реализацией 

IF NOT EXISTS(SELECT * FROM sys where name='web')
  BEGIN
    INSERT INTO sys (name, value) VALUES ('web', '14')
  END


под oracle пожалуйста
    


Ответы

Ответ 1



Можно вот так, если надо обойтись чистым sql: insert into sys (name, value) select 'web', '14' from dual where not exists (select 1 from sys where name = 'web') Так же можно использовать merge, он дает больше простора для маневра : merge into sys using (select 'web' as name, '14' as value from dual) t on (sys.name = t.name) when not matched then insert(name, value) values(t.name, t.value) Маленький комментарий по названию таблицы. Называть таблицу SYS в Oracle не желательно, может приводить к интересным последствиям в поведении IDE

Комментариев нет:

Отправить комментарий