根据列中的状态更改创建触发器并在表的另一列中插入值
Posted
技术标签:
【中文标题】根据列中的状态更改创建触发器并在表的另一列中插入值【英文标题】:Create Trigger based on Status change in column and insert value in another column for a table 【发布时间】:2021-04-30 10:36:15 【问题描述】:我有一个名为Employee
的表,其中包含Status
和Expected_Promotion_Date
之类的列
Status column
由 StatusEnum
填充,其值类似于 Level 1
、 Level 2
和 Level 3
。
当Employee
的Status
从Level 1
更改为Level 2
时,我需要一个trigger
来填充Expected_Promotion_Date
列中的值,即当前日期加上3 年。
我尝试制作触发器,请找到相同的参考代码:
CREATE or REPLACE TRIGGER Expected_Promotion_Date
AFTER
UPDATE OF STATUS FOR EACH ROW
DECLARE NEXT_MAINTENANCE_CONTROL DATE;
BEGIN
IF(:OLD.STATUS<>:NEW.STATUS) THEN
BEGIN
IF(:OLD.STATUS=-10 AND :NEW.STATUS=00)THEN
BEGIN
END
END
END
有人可以帮助我使用trigger
,因为我是新手,并且是第一次学习它。如果有人可以帮助我或指导我,那就太好了。
提前致谢。
【问题讨论】:
@Ankit - 请edit your question 将您的代码添加为格式化文本。还包括表定义,并解释您的代码有什么问题 - 如果它出错,或者没有按照您的预期进行,等等。 @APCLevel 1
的 intValue 为 -10,Level 2
的 intValue 为 00
【参考方案1】:
类似这样的:
create or replace trigger expected_promotion_date
before update on employee for each row
begin
if :old.status != :new.status then
:new.expected_promotion_date := trunc(sysdate) + interval '3' year;
end if;
end;
/
此代码检查 STATUS 的值是否已更改,如果不同,则使用今天的日期加上三年来填充预期促销日期列。
您可能需要调整此代码以处理您的问题中未包含的任何其他业务逻辑。例如,在您的评论中,您展示了一些与 STATUS 值相关的逻辑。我忽略了这一点,因为你没有解释应该发生什么。我们可以给出答案的有用性与问题的清晰度成正比。
【讨论】:
知道了,伙计,由于声誉计数低,无法投票,将其标记为正确,我实际上正在尝试对其进行调整。再次感谢您! 您应该能够为自己的问题投票?不是我需要代表,而是其他人可能 @APC 您可能想要检查 NULL 值。 @KoenLostrie - 这不是我的规则,这是由 Seeker 来定义要求的 :)以上是关于根据列中的状态更改创建触发器并在表的另一列中插入值的主要内容,如果未能解决你的问题,请参考以下文章
如何根据 PySpark 数据框的另一列中的值修改列? F.当边缘情况