Мне нужна помощь с командой MERGE в Oracle. В основном у меня есть эта команда, но я хочу еще немного ее оптимизировать:
MERGE INTO swap USING dual ON (SELECT id FROM student WHERE number = '123')
WHEN MATCHED THEN
UPDATE SET swapped = 1, last_swap = sysdate
WHEN NOT MATCHED THEN
INSERT (student_id, swapped, last_swap) VALUES ((SELECT id FROM student WHERE number= '123'), 1, sysdate)
Прямо сейчас это вставит или обновит регистр в таблице SWAP. Однако я хотел бы защитить его от вставки NULL в student_id, если в таблице STUDENT нет ученика с таким номером (я не хочу просто не разрешать значения NULL для sudent_id таблицы SWAP).
Другое дело, я повторяю SELECT id FROM student WHERE number = '123'
два раза, как я могу изменить это, чтобы выполнить его только один раз (сохранить результат в псевдониме или что-то в этом роде)?
Заранее большое спасибо!