テーブルに次のトリガーがあります。直面している問題はmy_hist
、条件が になると、古い値と新しい値の両方がテーブルに挿入されることupdated = 'Y'
です。
条件が になったときに、古い値を my_hist テーブルに効率的に挿入するにはどうすればよいですかupdated = 'Y'
。
ありがとう
CREATE OR REPLACE TRIGGER mytrig
AFTER UPDATE
ON mytab
FOR EACH ROW
WHEN (
new.updated = 'Y'
)
BEGIN
INSERT INTO my_hist
VALUES (
:old.id,
:old.no,
:old.start_date,
:old.end_date,
SYSDATE
);
END mytrig;
/
更新 1
更新updated = 'Y'
している場合、記録がある場合
id = 3、start_date='01-Jan-2014' および end_date='31-Jan-2014' でデータを更新すると
id = 3, start_date=='01-Jan-2014' and end_date='31-Mar-2014'
、my_hist テーブルに 2 つのレコードが作成されます。
id = 3 and start_date='01-Jan-2014' and end_date='31-Jan-2014'
と
id = 3 and start_date='01-Jan-2014' and end_date='31-Mar-2014'
理想的には、新しいデータid = 3 and start_date='01-Jan-2014' and end_date='31-Jan-2014'
であるため、2 行目ではなく、my_hist テーブルにのみ含める必要があります。end_date='31-Mar-2014'