2017-10-31 13 views
-2

で更新した後、私は2つのテーブル1を持っているが、同じスキーマを持つMailAddress & BackupMailAddressです。私はDBで以下の活動をしたトリガーを作りたいと思っています。トリガーを作成するには、Oracle

1回メールステータスMailAddressに「送信」に更新されました。同じ行をBackupMailAddressテーブルに挿入する必要があります。

2)行が正常BakcupMailAddressテーブルに挿入されると、同じ行がMailAddressテーブルから削除されるべきです。

+0

へようこそ。 SOで質問する必要があるかどうかを理解するには、このhttps://stackoverflow.com/help/mcveおよびhttps://stackoverflow.com/help/how-to-askをお読みください。これが最初の日なので、私は自分の返信を投稿しました。将来あなたの質問をどのようにしなければならないかを理解するために、記事を読んでください。また、誰かが返信したら何をする必要があるかを理解するために、このhttps://stackoverflow.com/help/someone-answersも読んでください。 – XING

答えて

0

あなたTriggerは次のようになります。

CREATE OR REPLACE TRIGGER insrt_mail_status 
    BEFORE UPDATE OF MAIL_STATUS 
    ON MAILADDRESS 
    FOR EACH ROW 
    WHEN (new.MAIL_STATUS = 'Send') 
BEGIN 
    INSERT INTO BackupMailAddress (MAIL_STATUS, col1, col3) 
     VALUES (:new.MAIL_STATUS, :new.col1, :new.col3); 
END; 

参照デモ:

テーブル:SO

CREATE TABLE MAILADDRESS 
(
    MAIL_STATUS VARCHAR2 (10), 
    col1   VARCHAR2 (10), 
    col3   VARCHAR2 (10) 
); 

CREATE TABLE BackupMailAddress 
AS 
    SELECT * FROM MAILADDRESS; 


SQL> SELECT * FROM MAILADDRESS; 

MAIL_STATU COL1  COL3 
---------- ---------- ---------- 
Send  A   B 

SQL> SELECT * FROM BackupMailAddress; 

no rows selected 

SQL> UPDATE MAILADDRESS 
    SET MAIL_STATUS = 'Send';  

1 row updated. 

SQL> commit; 

Commit complete. 

SQL> SELECT * FROM BackupMailAddress; 

MAIL_STATU COL1  COL3 
---------- ---------- ---------- 
Send  A   B 
+0

私のために働いたサポートをありがとう、親切に私はバックアップテーブルに挿入した後、メインテーブルからレコードを削除するのに役立ちます。 – Jai

+0

@Jai。メインテーブルから削除するには単にdeleteステートメントを使うか、そうするための手続きを書くことができます。トリガーの内側ではできません。 – XING

関連する問題