我想创建一个触发器,用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