2017-02-11 10 views
0

こんにちは、私は私がユーザーを削除するのに役立ちますトリガーを作成する必要があります。削除トリガー

例:ユーザーからのDELETE WHERE Users.Id =

Iユーザーのテーブルを参照し、私は私がこれを取得するユーザーテーブルから削除する前に、他のテーブルから削除しようとすると、テーブルを持っている1:これまで

The DELETE statement conflicted with the REFERENCE constraint "FK_UsersChats_Users". The conflict occurred in database "cd8eb179-8ec2-41ae-aa28-46e1571ca2bf", table "dbo.UsersChats", column 'UserId'. 

My Db diagram

マイコード:http://pastebin.com/45H1WGSr

+0

編集をロールバックしました。投稿のタイトルを編集し、質問の答えに[SOLVED]を追加することはできません。あなたが解決策を見つけ出し、それを将来の読者と共有したいのであれば、その目的のために提供された以下のスペースに答えを書くことによって、適切に解決してください。詳細情報については、[私はここで自分の質問に答えることはできますか?](http://stackoverflow.com/help/self-answer) –

+0

ありがとう参照、私は私がしたいことを確認した場合府、それは私に警告することをやって考えていました今TNX :) –

答えて

0

ストアドプロシージャを作成するか、または親テーブルから削除してから各子テーブルから削除する一連のクエリ、またはCASCADE DELETEを関係に設定して自動的に実行するようにすることができます。

+0

おかげで、私は「DELETEは、」今ちょうど小さな変更 と私はちょうど使用「INSTEAD OF DELETE」これを解決するためではなく、ために管理し、それがすべてうまく働いていたことをやるIL、自分の質問に答えるために。 –

+0

これは機能しますが、ほとんどのデータベース担当者はトリガーを使用しないように指示します。彼らはうまくいっていますが、あなたは彼らがそこにいるのを忘れる傾向があり、あなたが変更を加えたときに特定のことがなぜ壊れているのか、なぜデータが不思議に消え去っているのかを疑問に思うままにすることができます。ちょっとした提案... – PhillipXT

+0

@PhillipXT:カスケードする外部キーについても同じことが言えるでしょう。それとトリガーの両方が「遠くの行動」です。それは、すべての時間と場所がある、と言いました。この使用例では、私は好みの順序で好きです:ユーザを削除するストアドプロシージャ、ユーザテーブルのトリガ、カスケードする外部キー。 –

関連する問題