我作爲this--如何在Oracle中創建一個觸發器,它會基於條件限制對錶的插入和更新查詢
create table account
(
acct_id int,
cust_id int,
cust_name varchar(20)
)
insert into account values(1,20,'Mark');
insert into account values(2,23,'Tom');
insert into account values(3,24,'Jim');
我想創建一個觸發器,這將確保沒有帳戶表記錄可以被插入或帳戶表更新具有ACCT_ID如2和作爲CUST_ID 23.
我的代碼爲 -
create trigger tri_account
before insert or update
on account
for each row
begin
IF (:new.acct_id == 2 and :new.cust_id == 23) THEN
DBMS_OUTPUT.PUT_LINE('No insertion with id 2 and 23.');
rollback;
END IF;
end;
所以這個觸發器被創建,但與編譯錯誤。 現在,當我插入acct_id爲2和cust_id爲23的任何記錄時,它都允許。 但我得到一個錯誤說 ORA-04098:觸發器「OPS $ 0924769.TRI_ACCOUNT」是無效的,失敗再驗證
我不明白this.I也想表明,存款保險計劃是插入一條消息不可能。 請幫助...
謝謝你的寶貴意見。 – 2012-03-11 12:13:57
我仍然遇到這個錯誤,當我嘗試插入相同的記錄 - 插入到帳戶值(2,23,'JAMMm'); ORA-20001:沒有插入ID 2和23. ORA-06512:在「OPS $ 0924769.TRI_ACCOUNT」,第3行 ORA-04088:執行觸發器'OPS $ 0924769期間發生錯誤。 TRI_ACCOUNT' – 2012-03-11 12:14:42
我還有一個問題如何在上面的代碼中的條件子句中使用to_char函數。我試過的是... IF(:new.acct_id = 2和(選擇to_char(:new.startdate,'MONTH'))='JUNE')它給我編譯錯誤。請幫忙。 – 2012-03-11 12:35:28