更新我在兩個例子就是關於與條件DML條件DELETE/INSERT /在MERGE
MERGE INTO bonuses D
USING (SELECT employee_id, salary, department_id FROM employees
WHERE department_id = 80) S
ON (D.employee_id = S.employee_id)
WHEN MATCHED THEN UPDATE SET D.bonus = D.bonus + S.salary*.01
DELETE WHERE (S.salary > 8000)
WHEN NOT MATCHED THEN INSERT (D.employee_id, D.bonus)
VALUES (S.employee_id, S.salary*.01)
WHERE (S.salary <= 8000);
我傾向於明白,在MERGE
,只有目標表(d這裏)被修改。當我們將DML放入WHEN
時,它將作用於目標表D.因此,在這種情況下,條件與S有什麼關係,如DELETE
和UPDATE
子句中的條款。 WHERE
何時開始實施?匹配後?關於ON
之前的來源/目標?
MERGE INTO destination d
USING source s
ON (s.id = d.id)
WHEN MATCHED THEN
UPDATE SET d.description = 'Updated',
d.status = 10
DELETE WHERE s.status = 10;
和
MERGE INTO destination d
USING source s
ON (s.id = d.id)
WHEN MATCHED THEN
UPDATE SET d.description = 'Updated',
d.status = 10
DELETE WHERE d.status = 10;
我沒有得到2個方案之間的差別:源與目標表中的WHERE
子句。
在此先感謝。