我想創建某種觸發器來防止正在編輯的行,如果它是在今天的日期之後(將使用SYSDATE來獲取)。在特定條件下使列只讀only
我不確定如何做到這一點,因爲我是PL/SQL的新手,並且會想到某種類型的包可以使用遊標獲取日期,然後使用函數將布爾值返回到某個程序然後以某種方式停止發射的DML聲明?
在此先感謝
我想創建某種觸發器來防止正在編輯的行,如果它是在今天的日期之後(將使用SYSDATE來獲取)。在特定條件下使列只讀only
我不確定如何做到這一點,因爲我是PL/SQL的新手,並且會想到某種類型的包可以使用遊標獲取日期,然後使用函數將布爾值返回到某個程序然後以某種方式停止發射的DML聲明?
在此先感謝
顯然你需要一個日期列作爲你的目標。截斷SYSDATE將給你午夜。因此,如果截斷的SYSDATE大於另一個日期,它至少必須在第二天。
引發應用程序錯誤會導致更新失敗。請注意,如果您要更新多行,則單個故障將回滾所有更改。
create or replace trigger your_trg
before update on your_table
for each row
begin
if trunc(sysdate) > :old.whatever_date then
raise_application_error(-20000, 'It is too late to change this record');
end if;
end;
感謝您的回覆我不斷收到 ORA-04079:無效觸發規範 林不知道什麼是語法 更新問題:由於某種原因,甲骨文不喜歡「AS」關鍵字 – user2241161
哎呀,取出AS並再試一次 – APC
這工作完全謝謝你! – user2241161
您正在尋找的解決方案是VPD Column masking。 主要用於安全目的,VPD使您能夠爲數據訪問和顯示定義行/列級別規則。
查找觸發器。 –