какъв вид присъединяване се извършва? Мисля, че е пълно външно присъединяване, нали?
Не, това е обикновено външно съединение. Заявката трябва да знае кога има редове в целевата таблица, които също са в таблицата източник и кога има записи в таблицата източник, които не са в целевата таблица. Тъй като заявката не трябва да отговаря на редове, които са в целевата таблица, но не са в таблицата източник, не се нуждае от външното свързване, за да върви и в двете посоки.
Въпреки това, външното присъединяване няма да бъде извършено, ако няма not matched
клауза (която е напълно валидна). Оптимизаторът е достатъчно умен, за да знае, че в този случай вътрешното присъединяване е достатъчно.
по отношение на частта КОГАТО СЪВПАДА:какво се случва, когато ред от t съвпада с няколко реда от s?
Когато има няколко съвпадения, актуализирането се извършва за всяко съвпадение. Това означава, че която и актуализация да дойде последна, ще бъде тази, написана в комита. Няма начин да се диктува поръчка, така че в този случай източникът на актуализацията е на практика случаен (от набора от съвпадения).
Както @ Vincent Malgrat посочи, това беше неправилно. Изглежда, че Oracle ще произведе грешка „ORA-40926:не може да се получи стабилен набор от редове в таблицата източник“, ако има няколко съвпадения.
по отношение на частта КОГАТО НЕ СЪВПАДА, Вярвам, че това означава „когато ред в s няма съответствие в t“. Прав ли съм?
Това е правилно.