SQL Server 2016で一時テーブルを使用します。現在、一時テーブルではON DELETE CASCADEを使用できません。どのように行動を模倣するためのトリガーを実装できますか?アプリケーションでEntity Frameworkのナビゲーションプロパティを使用するため、外部キーを保持したいと考えています。ON DELETE CASCADEの代わりにSQL Serverトリガを実装するにはどうすればよいですか?
外部キー条件で削除文が機能しないため、アフタートリガーが動作しないと思います。
我々は次のような単純な状況があるとします。
- UserRole.UserId:User.Id への外部キー
- UserRole.RoleId:Role.Id
Id == 2のロールを削除した場合、UserRoleの2番目と4番目の行を削除します。一時テーブルでON DELETE CASCADEを使用せずにこれを実装するにはどうすればよいですか?
あなたは '代わりTriggers'のを聞いたことがあり、それをグーグル。 –
はい、INSTEAD OFトリガーは、DMLロジックの無効化を避けるために、現行表または履歴表では許可されていません。 AFTERトリガーは現在の表でのみ許可されます。 DMLロジックの無効化を避けるため、ヒストリ表でブロックされます。 – cSteusloff
これを考えてみましょう - トリガのようなものを介して 'ON DELETE CASCADE'を実装するのは簡単ではなかったのですが、Microsoftの開発者はなぜこのようなメカニズムを使って' ON DELETE CASCADE'を実装していないのでしょうか?試行する回避策には同様の制限が適用される可能性があります。 –