web-dev-qa-db-ja.com

MS Accessトリガー?

MS Accessに[Insert_Record]および[Delete_Record]という2つのテーブルがあります。両方のテーブルには同じフィールドがありますが、1つのテーブルにはレコードがありますが、別のテーブルにはレコードがありません。

質問:テーブル[Insert_Record]からレコードを削除すると、レコード全体が別のテーブルに自動的に挿入されます。つまり、[レコードの削除]です。

どうすればこれを達成できますか?

16
Farid

Access 2010では、トリガーに似たイベント駆動型 データマクロ が導入されました。質問で説明されているプロセスは、[Insert_Record]テーブルのAfter Deleteデータマクロで簡単に実行できます。

AfterDelete.png

16
Gord Thompson

私が理解しているように、Accessにはトリガーがありません。

おそらくあなたができる最善のことは、この種のロジックをテーブルを編集するフォームに入れることです。つまり、削除されたイベントをフォームレベルで処理し、挿入ロジックをそこに配置します。

トリガーが必要な場合は、トリガーをサポートする適切なRDMS(MySQL、MS SQL、Oracle、その他多数)を使用する必要があります。

編集:これを行う別の方法(これは機能する場合と機能しない場合があります)は、ブール列 'IsDeleted'を追加することです。これにより、レコードを別のテーブルに移動する代わりに、論理的に削除することができます。このアプローチの欠点は、削除されたレコードがメインテーブルに残るため、大量の削除があるとパフォーマンスが低下する可能性があることです。

1
RQDQ

追加クエリを作成して、2番目のテーブルにレコードを追加します。これは、最初のテーブルからレコードを削除するために使用しているフォームのOn Delete Confirmイベントで実行されます。

0
FSBarker