Руководство по языку sql


MERGE INTO PRODUCT_IVENTORY AS


Download 1.22 Mb.
Pdf ko'rish
bet13/62
Sana23.04.2023
Hajmi1.22 Mb.
#1393455
1   ...   9   10   11   12   13   14   15   16   ...   62
Bog'liq
Firebird3 SQL features

MERGE INTO PRODUCT_IVENTORY AS TARGET 
USING ( 
SELECT 
SL.ID_PRODUCT, 
SUM(SL.QUANTITY) 
FROM SALES_ORDER_LINE SL 
JOIN SALES_ORDER S ON S.ID = SL.ID_SALES_ORDER 
WHERE S.BYDATE = CURRENT_DATE 
GROUP BY 1 
AS SOURCE(ID_PRODUCT, QUANTITY) 
ON TARGET.ID_PRODUCT = SOURCE.ID_PRODUCT 
WHEN MATCHED AND TARGET.QUANTITY - SOURCE.QUANTITY <= 0 THEN 
DELETE 
WHEN MATCHED THEN 
UPDATE SET 
TARGET.QUANTITY = TARGET.QUANTITY - SOURCE.QUANTITY, 
TARGET.BYDATE = CURRENT_DATE 
Поддержка предложения RETURNING … INTO 
Оператор MERGE, затрагивающий не более одной строки, может содержать 
конструкцию 
RETURNING 
для 
возвращения 
значений 
добавленной, 


Новые возможности языка SQL Firebird 3.0 
18 
модифицируемой или удаляемой строки. В RETURNING могут быть указаны 
любые столбцы из целевой таблицы (обновляемого представления), не 
обязательно все, а также другие столбцы и выражения. 
Возвращаемые значения содержат изменения, произведенные в триггерах 
BEFORE.
Имена столбцов могут быть уточнены с помощью префиксов NEW и OLD для 
определения, какое именно значение вы хотите столбца вы хотите получить до 
модификации или после. 
Для предложений WHEN MATCHED UPDATE и MERGE WHEN NOT 
MATCHED 
неуточнѐнные имена столбцов или уточнѐнные именами таблиц или их 
псевдонимами понимаются как столбцы с префиксом NEW, для предложений 
MERGE WHEN MATCHED DELETE 
– с префиксом OLD. 
Примеры
Немного модифицируем наш предыдущий пример, чтобы он затрагивал 
только одну строку, и добавим в него инструкцию RETURNING возвращающего 
старое и новое количество товара и разницу между этими значениями. 
… 

Download 1.22 Mb.

Do'stlaringiz bilan baham:
1   ...   9   10   11   12   13   14   15   16   ...   62




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling