問題タブ [cascading-deletes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Hibernate Envers: カスケード削除の監査テーブルに削除エントリがない
Hibernate envers を使用して、データベース オブジェクトに加えられたすべての変更を追跡しています。これらのオブジェクトは、(一方向の) 親子関係によって関連付けられることがあります。削除されたすべてのオブジェクトをリストすることになっているクエリが必要なので、envers の監査テーブルに依存して、削除されたオブジェクトをマークします (*_aud テーブルの revtype 列)。ただし、これらのエントリは、親オブジェクトが削除されたときに子オブジェクトに対して作成されないようです。
私のオブジェクトクラスは次のようになります。
どういうわけか休止状態の環境をバイパスするカスケード削除アクションと関係があると思われます。参照された親が削除されたときにすべての子がデータベースによって自動的に削除されることを確認しながら、子オブジェクトの監査テーブルのエントリが作成されるようにするにはどうすればよいですか?
java - 同じテーブルからのカスケード削除
こんにちは、Hibernate 実装で JPA2 を使用しています。次のような単純なマッピングを取得しました。
および id class を持つ 2 番目のテーブル (SubscribeUser):
2 つのレコードが subscribed_users テーブルであると仮定しましょう: 1.
2.
問題は、id = 1 のユーザーを削除すると、最初のレコードはカスケード オプションで正しく削除されますが、subsubscribed_users テーブルの 2 番目のエントリに id = 1 のユーザーへの参照がまだあるため、エラーが発生することです。 . 2番目のレコードもカスケード削除する可能性はありますか?
ありがとう
ダウィド
php - PHP、MySQL、カテゴリ、およびサブカテゴリ – 削除
次のようなMySQLテーブルがあります。
親が削除されるたびに、すべての子を確実に削除したいと思います。最初は、そのような外部キーをテーブルに追加することでそれをやりたかった:
これはうまくいきません。内部関係も試しましたが、成功しませんでした。
親とその子は、再帰的な PHP 関数でリンクされています。MySQL で目標を達成する方法はありますか、それとも PHP を使用して行う必要がありますか?
sql-server - SQLServerエラーを理解しない
ユーザー(User)のテーブルがあり、どのユーザーが他のユーザーを参照したかを追跡するために新しいテーブルを作成する必要があります。したがって、基本的に、同じテーブルの行間に多対多の関係を作成しています。
そのため、UserId列とUserReferredId列を使用してテーブルUserReferralsを作成しようとしています。両方の列を複合主キーにしました。また、両方の列はUser.UserIDにリンクする外部キーです。
ユーザーを削除すると関係も削除されるはずなので、両方の外部キーをカスケード削除に設定しました。ユーザーが削除されると、UserReferralsの関連する行もすべて削除されます。
しかし、これは私にメッセージを与えます:
'User' table saved successfully
'UserReferrals' table Unable to create relationship 'FK_UserReferrals_User'. Introducing FOREIGN KEY constraint 'FK_UserReferrals_User' on table 'UserReferrals' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint. See previous errors.
このエラーは発生しません。カスケード削除は、外部キーを持つ行のみを削除しますよね?では、どのようにして「サイクリングカスケードパス」を引き起こすことができるのでしょうか。
ヒントをありがとう。
sql - SQL削除カスケードが機能しない.
犬と猫の 2 つのテーブルを持つ Microsoft SQL データベースがあります。
"dog" テーブルには "food" という主キー列があり、これは "food" という列と関連しており、外部キーとして機能する "cat" テーブルにもあります。
テーブル間の関係には「on delete cascade」ルール セットがあるため、「dog」テーブルから行を削除すると、「cat」テーブルの関連する行も削除する必要があります。
しかし、「cat」テーブルの行は削除され、残ります。Microsoft SQL データベース マネージャーを使用して、"dog" テーブルの行を削除します。
なぜこれが起こるのか分かりますか?この方法で行を削除するには、特別な delete sql コマンドを使用する必要がありますか?
//編集
テーブルのスクリプトは次のとおりです。
asp.net - NHibernateの1対多の削除はカスケードされません
「写真」クラスと「コメント」クラスがあります。写真には複数のコメントを割り当てることができます。
これをHBMマッピングファイル内で1対多の関係として構成し、Photo.hbm.xmlマッピングファイル内の「コメント」バッグに対してcascade="all-delete-orphan"を設定しました。
ただし、1つ以上のコメントが関連付けられている写真を削除しようとすると、「DELETEステートメントがREFERENCE制約「FK_Comments_Photos」と競合しています」というメッセージが表示されます。
Photo.hbm.xmlのコメントバッグに対して他のいくつかのカスケードオプションを試しましたが、設定内容に関係なく、毎回同じ結果が得られます。写真を削除して、関連するコメントも自動的に削除できるようにしたいだけです。
これが私の写真のマッピングです(簡潔にするために編集):
これが私のコメントマッピングです(簡潔にするために編集):
コメントが関連付けられた写真を削除しようとすると、カスケードが発生しない理由について誰かが提案を持っていますか?
更新:カスケードを発生させる唯一の方法は、SQL Server内で「カスケード」とのこの関係に対して「ルールの削除」を構成することです。そうすることで、NHibernate内でカスケードアクションを指定する必要がなくなります。マッピング。ただし、これは私にとって理想的ではありません-NHibernateマッピング内でカスケード動作を理想的に構成できるようにしたいので、NHibernateに注意を払っていないように見える理由についてはまだ混乱していますカスケード設定?
asp.net - NHibernateの「Where」句がカスケード削除で問題を引き起こしている
「写真」オブジェクト用に次のマッピングファイルがあります(簡潔にするために編集)。
'Comments'バッグに対してWhere句を適用して、'Approved'プロパティ=trueのコメントのみを取得したいと思います。ただし、これを設定すると、削除されたPhotoオブジェクトがwhere句の条件を満たさなかったため、削除された未承認のコメントがカスケードされない(孤立したコメントレコードが残る)という問題シナリオに遭遇しました。本質的には、カスケード削除を除いてwhere句を順守する必要がありました。その場合、写真が削除されたときに、写真に関連付けられたコメントを常に削除する必要がありました。
これが私のコメントマッピングファイルの編集されたコピーです:
どうすればこれを回避できますか?
sql - mySqlで外部キーを作成する際の問題
次のstatemntによってSQLに外部キーを作成しました。
作成は成功したように見えます。その後、deleteステートメントを実行します。
それでもユーザーには、それを参照している行がまだ存在します。mysqlワークベンチを開くと、外部キーが作成されたという兆候が表示されません。なぜこれが起こるのか誰かが知っていますか?または私が間違っていることは何ですか?これは、2つのテーブルで1対1の関係です。
java - コレクションを 'new ArrayList()' に設定するときの hibernate delete のカスケード
ID とコレクションを含む hibernate でマップされたオブジェクトがあります。オブジェクトにコレクション内のアイテムが含まれているある時点で、obj.setCollection(new ArrayList())
以前にコレクション内にあったアイテムをデータベースから削除したいと考えています。誰かが助けてくれれば、それは大歓迎です。問題を説明するコード:
ORM: Foo 1-* バーとバー 1-1 Foo