簡體   English   中英

在Oracle SQL上將日期與觸發器進行比較

[英]Compare Date with Trigger on Oracle SQL

我有一個包含這些列的表:

  • DateDebVal DATE
  • DateFinVal日期
  • isCurrent NUMBER

我需要一個觸發器來執行以下操作:

CREATE TRIGGER check_date
AFTER INSERT OR UPDATE ON tablename
FOR EACH ROW
BEGIN
        IF sysdate < DateFinVal
             set isCurrent = 1
        ELSE
             set isCurrent = 0
END;

我可以比較這些日期嗎? 使用觸發器而不是視圖或過程是一個好主意嗎?

絕對可以比較日期,但是使用:=完成分配:= PL / SQL(不是set

如果要更改新插入行的值,則必須使用BEFORE觸發器:

CREATE TRIGGER check_date
BEFORE INSERT OR UPDATE ON tablename
FOR EACH ROW
BEGIN
  IF sysdate < :new.datefinval
    :new.iscurrent := 1;
  ELSE
    :new.iscurrent := 0;
  END IF;
END;
/

在線示例: https//dbfiddle.uk/?rbms = aracle_11.2&fiddle = 796347f1b5811448dddf2d0a532c2c2c

Sysdate和DateFinVal屬於DATE類型,因此您可以比較它們。 這取決於你需要這個觸發器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM