1

現時点では、日付フィールドを で更新するトリガーがありますがsysdate、残念ながら、同じ秒内に更新が発生した場合、これは一意ではない場合があります。使用する列を変更して、systimestampミリ秒を使用し、常に一意になるようにすることは可能ですか?

トリガーは次のようになります。

BEGIN
IF INSERTING or :old.STATUS_FLAG <> :new.STATUS_FLAG THEN
INSERT INTO T_SCHEME_STATUS_HISTORY
  (SCHEME_ID, STATUS_FLAG, DATE_STATUS_CHANGED, AUDIT_CREDENTIALS, AUDIT_DTM)
VALUES
  (:new.SCHEME_ID, :new.STATUS_FLAG, sysdate, :new.AUDIT_CREDENTIALS, SYSDATE);
END IF;  
END;

DATE_STATUS CHANGEDを使用するように変更したいsystimestampので、常にユニークですが、更新している列がタイプでDATE(7)あるため、収まりません。

受け入れるようにテーブルを変更する方法はありsystimestampますか? さらに情報が必要な場合はお知らせください。

4

1 に答える 1

1

キーとして時間値を使用しないことについての@Boneistの発言は的を射ています。ただし、これを行うことに絶対に縛られ、決心している場合は、そうです。もちろん、実行できます。

ALTER TABLE WHATEVER
  MODIFY (SOME_DATE_FIELD TIMESTAMP(6));

これにより、データ型が TIMESTAMP(6) に変更されます。これは、1/1,000,000 秒まで正確です。これで要件が満たされることを願っていますが、実際には、日付/時刻フィールドを一意のキーとして使用しないでください。

幸運を祈ります。

于 2015-08-13T12:10:36.267 に答える