【发布时间】:2017-06-02 18:42:36
【问题描述】:
我有一个有 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 是否已具有此卡号 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 可以成为解决方案吗?另外,到目前为止,您尝试过什么?
-
我尝试在 msisdn 和 cardnumber 上添加唯一约束,但它不起作用(影响应用程序的功能)。如果它是一个触发器,我认为我们可以避免将多个相同卡号的条目分配给表中的单个 msisdn。