Для следующего вопроса сказано, что ответ должен быть C. Но я думаю, что правильным ответом является «Ответ D», поскольку блок NOT MATCHED вставляет все unmatching записи в целевую таблицу. Может ли кто-нибудь объяснить это? Спасибо.Слияние таблицы в Oracle с условием удаления, ссылающимся на исходную таблицу
Q) Просмотрите экспозицию и просмотрите данные в таблицах ORDERS_MASTER и MONTHLY_ORDERS.
Оценить следующий MERGE заявление:
MERGE INTO orders_master o
USING monthly_orders m
ON (o.order_id = m.order_id)
WHEN MATCHED THEN
UPDATE SET o.order_total = m.order_total
DELETE WHERE (m.order_total IS NULL)
WHEN NOT MATCHED THEN
INSERT VALUES (m.order_id, m.order_total);
Что бы результат выше заявление?
А. В таблице ORDERS_MASTER будет содержать ORDER_IDs 1 и 2.
В. ORDERS_MASTER таблица будет содержать ORDER_IDs 1,2 и 3.
С. В таблице ORDERS_MASTER будет содержать ORDER_IDs 1 , 2 и 4.
Д. ORDERS_MASTER таблица будет содержать идентификаторы заказов 1,2,3 и 4.
Ответ: С
Благодаря ninesided. Мне показалось, что «WHEN NOT MATCHED» оценивается после «DELETE», а затем Order_ID 3 снова добавляется в целевую таблицу, делая все 1,2,3 и 4 доступными в целевой таблице. – CAD
Если вы не возражаете, можете ли вы изучить этот вопрос. http://stackoverflow.com/questions/30755192/version-query-output-after-insert-update-and-delete – CAD