sql >> データベース >  >> RDS >> Oracle

Oracleデータベースへの挿入/更新/削除をログに記録する

    トリガーの多くの例は、Oracleのドキュメントにあります。必要なのは、各行トリガーの挿入、更新、削除の後で、ログテーブルにデータを入力することです。 Oracleドキュメントの例を次に示します。

    http://docs.oracle.com/cd /B28359_01/appdev.111/b28370/triggers.htm#LNPLS020

    CREATE TABLE Emp_log (
      Emp_id     NUMBER,
      Log_date   DATE,
      New_salary NUMBER,
      Action     VARCHAR2(20));
    
     CREATE OR REPLACE TRIGGER Log_salary_increase_ARUID
      AFTER UPDATE OR INSERT OR DELETE ON emp
      FOR EACH ROW
    BEGIN
      -- Can be separated for Inserting then Updating with addl if
      -- In this case it may be easier to control and/or add flags to your log tables
      -- such as Action = 'INS' or Action = 'UPD' --
      If (INSERTING OR UPDATING) 
      THEN
        -- Insert newly created/updated values to your log table --
        INSERT INTO Emp_log (Emp_id, Log_date, New_salary, Action)
         VALUES (:NEW.Empno, SYSDATE, :NEW.SAL, 'INS_UPD');
      ELSE  
        -- Deleting - insert old or deleted values to your logs --
       INSERT INTO Emp_log (Emp_id, Log_date, New_salary, Action)
         VALUES (:OLD.Empno, SYSDATE, :OLD.SAL, 'DEL');
    END;
    /
    


    1. mysqli::commitとmysqli::rollbackはどのように機能しますか?

    2. PostgreSQLのbyteaフィールドに(dbase内で)サイズ制限を設定できますか?

    3. MySQLのD.O.Bフィールドから年齢を取得するにはどうすればよいですか?

    4. MySQL:列を2つに分割