我想創建一個觸發器,用PL/SQL更新另一個表,我遇到了一些問題。 (我讀過this,但沒有太大幫助)。Oracle PL/SQL觸發器更新另一列
這裏是我的情況,我可以說,2個表:
客戶表
客戶ID號主鍵,ItemsDelivered數
項目表
客戶ID號,項ID號,ItemDelivered VARCHAR(15)
比方說,當somenone下訂單,我們在項目表看起來像這樣的新紀錄:
| CustomerID | ItemID | ItemDelivered |
| 1 | 1 | False |
我想要一個觸發器,當有人更新ItemDelivered collum時將引發ItemsDelivered計數器n改爲「True」。
create or replace Trigger UpdateDelivered
After Update On Items For
Each Row
Declare
Counter Customers.ItemsDelivered%Type;
Begin
If (:Old.ItemDelivered ='False' And :New.ItemDelivered='True') Then
Select ItemsDelivered into Counter From Customers where CustomerdID =:New.CustomerID;
Update....
end if;
END;
這是我的問題,如果只有ItemDelivered列更新沒有New.CustomerID!
有什麼辦法可以獲得剛剛更新的行的CustomerID? (我曾嘗試與插入虛擬表加入,但我得到的表不存在錯誤)上UPDATE
Old.CustomerID是你在找什麼,我想。但你真的想這樣做嗎?只需加入並計數,當你需要計數。最終,你將開始嘗試維護像「ItemsDelivered」這樣的計算列的完整性問題。 – Glenn 2012-04-06 15:46:57
@VGeorge:請詳細說明你想做什麼,爲什麼你想要:New.customerID?和我thnk你想要的:OLD.customerID? – 2012-04-06 15:47:05
非常感謝您的幫助!舊參數像魅力一樣工作!我的情況與我所描述的有所不同,我簡化了一下。我想要做的事情實際上是提高一個人的工資,每當從「未婚」到「已婚」。感謝真的很多,我真的很感謝幫助:) – VGe0rge 2012-04-06 16:01:49