2016-06-25 6 views
-2

各挿入および更新列のテーブル列名 'updated_date'をタイムスタンプで更新する必要があるため、レコードが挿入されている場合は、 update_dateのタイムスタンプ。レコードが更新されている場合は、update_dateカラムの現在のタイムスタンプを更新する必要があります。すべてのクエリを変更するのではなく、DDLを使用してOracleレベルで処理したい。 oracleに同じオプションがありますか?挿入や更新に発火すると、あなたが現在取得します。このトリガータイムスタンプ付きの自動更新Oracleテーブル列

create or replace trigger trigger1 
before insert or update on t1 
for each row 
begin 
    :new.updated_date := systimestamp; 
end; 
/

+1

トリガーを使用します。 – MT0

答えて

0

私はあなたがあなたのケースは非常にシンプルなソリューションを(私が正しくあなたの条件を理解している場合)は、少なくともとしてトリガになるはずだと思いますどちらの場合でもタイムスタンプ値 - レコードを挿入するか更新するかは関係ありません。

あなたは、挿入のための別のBEFOREトリガーを持っているか、に次のコードを追加することができます更新した場合:

if inserting or updating then 
    :new.updated_date := systimestamp; 
end if; 

は、トリガのより多くのユースケースについては、Oracle RDBMSのバージョンのドキュメントをお読みください。

P.S. DDLはデータ定義の変更(表の変更など)用であり、DMLの挿入/更新/削除用ではありません。

関連する問題