之前刪除記錄我有一個表4列觸發插入
1.msisdn
2.accountnumber
3.cardnumber
4.subscriptiondate
我想一個觸發器添加到該表。如果我插入數據是
1.99999999
2.2
3.3298572857239
4.(this can be blank)
,這是目前在表中的數據是
1.99999999
2.1
3.3298572857239
4.(this can be blank)
觸發器應檢查是否有這個MSISDN 99999999
已經有這個cardnumber 3298572857239
的記錄。如果表中已有記錄,則觸發器應刪除現有條目並插入新條目。最終結果應該看起來像這樣
1.99999999
2.1
3.3298572857239
4.(this can be blank)
我想要保持accountnumber的值在觸發器之前和之後相同。這是我迄今爲止嘗試過的,但是對於此觸發器,我沒有在accountnumber列中獲取任何數據。請有人幫忙
DROP TRIGGER TRIG_TABLEA;
CREATE OR REPLACE TRIGGER TRIG_TABLEA
BEFORE INSERT ON TABLEA
REFERENCING OLD AS Old NEW AS New
FOR EACH ROW
BEGIN
:new.accountnumber := :old.accountnumber;
DELETE FROM TABLEA WHERE MSISDN = :new.MSISDN AND CARDNUMBER = :new.CARDNUMBER;
:new.MSISDN := :new.MSISDN;
:new.CARDNUMBER := :new.CARDNUMBER;
:new.accountnumber := :old.accountnumber;
END;
/
你需要一個觸發器嗎一個MERGE可以成爲一個解決方案嗎?另外,你到目前爲止嘗試過什麼? – Aleksej
我試着在msisdn和cardnumber上添加獨特的約束,但它不起作用(影響應用程序的功能)。如果它的觸發器我認爲我們可以避免分配給表中單個msisdn的同一個cardnumber的多個條目。 –