#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
Комментариев нет:
Отправить комментарий