0
在Oracle環境(我使用的SQLPLUS)中。我的問題是如何改變新插入的元組的數據。 這裏是一個例子:我需要確保插入發生在表「訂單」,如果它的屬性「weight」大於100,它的另一個屬性「size_level」必須是1.否則(重量< = 100), size_level必須爲0. 爲了做到這一點,我想我需要調用一個存儲過程。從觸發器調用的SQL過程
CREATE OR REPLACE TRIGGER new_ship_trigger
AFTER INSERT ON Orders
FOR EACH ROW
BEGIN ATOMIC
CALL UpdateShipSizeLevel(:new)
END;
/
我該如何編寫存儲過程部分的代碼?或者,也許我需要一個光標? 我需要不添加約束表「訂單」,我應該使用不超過一個觸發器。
這是SQL正確,只是澄清... – Codexer
@zaggler是的。 – tic30
1)通常你可以做一個'BEFORE INSERT'觸發器,它可以用來修改或添加值,然後他們擊中表。 2)另外,'size_level'是_derived_信息,通常不應該存儲(如果可以避免的話)。您可能只能將其定義爲視圖的一部分。否則,如果您需要性能,請考慮計算列。 –