Как создать команду UPSERT? - PullRequest
0 голосов
/ 12 ноября 2018

Я хочу заменить все экземпляры INSERT в одном сценарии другим ключевым словом, которое будет обновлять данные вместо вставки данных.С mySQL я мог бы использовать UPSERT или REPLACE.Но с Oracle я не могу использовать MERGE, потому что синтаксис MERGE более сложный, поэтому я не могу просто изменить одно ключевое слово.Есть идеи? +

INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
-- would become :
UPSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

ЕСЛИ все это относится к одной и той же таблице, а имена столбцов расположены в одном и том же порядке, возможно, вам удастся изменить его для вызова хранимой процедуры

вызов upsert_proc (значение1, значение2, значение3, ...);

Для выполнения слияния вам потребуется код этой процедуры или вставка с обработчиком исключений для обновления.

0 голосов
/ 12 ноября 2018

Боюсь, вы не можете этого сделать, то есть просто найдите / замените INSERT на MERGE и ожидайте, что это сработает. Это не будет, потому что синтаксис был бы неправильным. Как вы уже заметили, MERGE сложнее, чем чистый INSERT и / или UPDATE, так что ... вам не повезло.

Однако, если вы готовы написать еще какой-то код (полностью переписать INSERT, которые у вас есть), все будет в порядке, но потребует некоторых усилий.

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