問題タブ [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.

0 投票する
2 に答える
1691 参照

sql-server - ロックの性質は削除中の子テーブルです(SQLサーバー)

数日から私は次のシナリオを考えています

1対多の親子関係を持つ2つのテーブルがあるとします。親行を削除すると、親に関連する子の行を削除する必要があります。簡単でしょ?

上記の操作を行うには、トランザクションスコープを作成する必要があります。これは次のように実行できます。(その疑似コードですが、私はodbc接続を使用してc#コードでこれを行っており、データベースはSQLサーバーです)

  1. トランザクションの開始(読み取りコミット)
  2. child.fk=p1であるすべての子を読み取ります
  3. foreach(child)child.pk=cxである子を削除します
  4. parent.pk=p1である親を削除します
  5. トランスをコミットする

また

  1. トランザクションの開始(読み取りコミット)
  2. child.fk=p1であるすべての子を削除します
  3. parent.pk=p1である親を削除します
  4. トランスをコミットする

今、私の心の中にいくつかの質問があります

  1. 数秒以内に他の何千もの操作(選択/更新/削除/挿入)が実行されるリアルタイムシステムのシナリオを特に考慮して、上記のどれを使用するのが良いですか。

  2. トランザクションが完了するまで、child.fk = p1の新しい子が追加されないようにしますか?

  3. 2番目の質問で「はい」の場合、それはどのように保証されますか?それはテーブルレベルのロックを取りますか、それとも何ですか。

  4. SQL Serverでサポートされているインデックスロックの種類はありますか?はいの場合、その機能と使用方法はありますか?

よろしくムバシャール

0 投票する
1 に答える
1872 参照

django - Django外部キーカスケード削除と「related_name」パラメーター(バグ?)

このトピックでは、必要がない場合に、関連するオブジェクトのカスケード削除を防ぐための良い方法を見つけました。

ただし、「related_name」パラメータでForeignKeyフィールドを使用している場合、このメソッドは失敗するようです。私のように、「clear()」メソッドは正常に機能し、「関連付け解除された」オブジェクトのインスタンスを保存します。しかし、削除している間、djangoはこのオブジェクトの別の記憶されたコピーを使用します。それはまだオブジェクトに関連付けられているため、削除しようとしています-whooooosh!...親戚にさようなら:)

データベースは私の前にアーキテクチャ化されていて、やや奇妙な方法で作成されていたため、これらの「related_names」を妥当な時間内にエスケープすることはできません。誰かがそのようなトラブルの回避策について聞いたことがありますか?

0 投票する
1 に答える
184 参照

database - NHibernate: 削除エラー

モデル: 1 つのインストールに複数の「コンピュータ システム」を含めることができるモデルがあります。

データベース: テーブル Installations には、名前と説明の 2 つの列があります。テーブル ComputerSystems には、名前、説明、およびインストール ID の 3 つの列があります。

マッピング:

インストール用に次のマッピングがあります。

ComputerSystem の次のマッピングがあります。

クラス:

インストール クラスは次のとおりです。

ComputerSystem クラスは次のとおりです。

public class ComputerSystem { パブリック仮想文字列名 { get; 設定; } public virtual 文字列の説明 { get; 設定; } パブリック仮想インストール インストール { get; 設定; }

問題は、ComputerSystem を含むインストールを削除しようとするとエラーが発生することです。エラーは次のとおりです。「削除されたオブジェクトはカスケードによって再保存されます (関連付けから削除されたオブジェクトを削除します)」。誰でも助けることができますか?

よろしく、 セブ

0 投票する
2 に答える
559 参照

.net - 多対多の削除を休止状態にする

多対多の関係を持つ2つのクラスがあります。私がしたいのは、一方の側のみを削除すると、どちらの側を削除しても関連レコードが削除されるということです。

単純化されたモデル:

クラス:

オーバーライドによる流暢な自動マッピング:

カスケード設定と逆設定のさまざまな組み合わせを試していますが、そこに到達できません。カスケードも逆もない場合、コレクション内にエンティティが重複します。片側に逆を設定すると重複がなくなりますが、資格を削除しようとすると、「削除されたオブジェクトはカスケードによって再保存されます」というメッセージが表示されます。

どうすればいいですか?

削除する各オブジェクトの関連付けをクリアする責任はありますか?

0 投票する
1 に答える
14169 参照

sql - 既存のテーブルに削除カスケードを追加するtsqlスクリプト

既存のテーブルのカスケード削除を有効にするために使用できるスクリプトはありますか。ありがとう。

0 投票する
1 に答える
292 参照

grails - Grailsの1対多の関係で親を削除すると、子でbeforeInsertイベントが呼び出されるのはなぜですか?

私には1対多の関係があり、複数の子を持つ親を削除しようとすると、最初の子でberforeInsertイベントが呼び出されます。このイベントには、親を削除するときではなく、子を挿入する前に呼び出すコードがあります。何が間違っているのかについてのアイデアはありますか?

エンティティ:

0 投票する
3 に答える
136 参照

sql-server-2005 - SQL Server の削除 - 外部キー

SQL Server 2005 に 2 つのテーブルがあります。

  • USER テーブル: ユーザーに関する情報など。
  • COUNTRY テーブル : 世界中の国全体のリストを保持します。
  • USER_COUNTRY テーブル: どのユーザーがどの郡を訪問したか、どの一致するか。UserID と CountryID を保持します。

たとえば、USER_COUNTRY テーブルは次のようになります。

私の質問は次のとおりです。USER テーブルでユーザーが削除された場合、USER_COUNTRY テーブルの関連レコードを直接削除するにはどうすればよいですか。おそらく、Foreign Key Constains を使用して?

0 投票する
3 に答える
9516 参照

entity-framework - Entity Framework 4 で親コレクションから子エンティティを削除するにはどうすればよいですか?

私は Entity Framework 4 を使用しており、親エンティティと子エンティティの間に 1 対多の関係があります。親の子コレクションから削除することにより、親リポジトリを使用して子を削除しようとしています:

変更を保存しようとすると、次のエラーが表示されます。

「ParentChild」AssociationSet からの関係は「削除済み」状態です。多重度の制約がある場合、対応する「子」も「削除済み」状態でなければなりません。

確かに、子リポジトリを使用して明示的に子エンティティを削除する必要はありません!

0 投票する
1 に答える
1089 参照

mysql - mysql codeigniter アクティブ レコード m:m 削除

am:m 関係を持つテーブル 2 のテーブルがあります。テーブルの 1 つから行を削除するときに、結合テーブルの行も削除したい場合、SQL は次のようになります。

表1

表 2

だから私がしたいのは、行がテーブル1から削除され、IDが1の場合、テーブルの行にも関係の一部としてその考えがあることです。

私は現在これを持っているコードイグナイターのアクティブなレコードクラスに合わせてこれを行いたいです,

0 投票する
1 に答える
1239 参照

c# - NHibernateによるツリーの削除

私は少し問題に苦しんでいて、それが単に不可能であるという結論に到達し始めています。

グループというテーブルがあります。これらのシステムのほとんどと同様に、グループにはParentGroupコレクションとChildrenコレクションがあります。したがって、テーブルグループは次のようになります。

FNH AutoMappingsを使用してマッピングを行いましたが、これのデフォルトをオーバーライドする必要がありました。

さて、一般的な考え方は、ノードとそのすべての子を削除して、NHによっても削除できるようにすることでした。したがって、ルートノードのみを削除すると、基本的にテーブル全体がクリアされます。

最初に試してみましCascade.AllDeleteOrphanたが、これは、Childrenコレクションからのアイテムの削除に対してのみ機能し、親の削除に対しては機能しません。

ForeignKeyCascadeOnDelete次に、操作がを介してデータベースに委任されるように試みましたon delete cascade。しかし、一度実行すると、MSSql2008ではこの制約を作成できなくなり、次のように失敗します。

テーブル'Group'にFOREIGNKEY制約'FKBA21C18E87B9D9F7'を導入すると、サイクルまたは複数のカスケードパスが発生する可能性があります。ON DELETENOACTIONまたはONUPDATENO ACTIONを指定するか、他のFOREIGNKEY制約を変更します。

さて、それは私にとってそれです。子をループして1つずつ削除し、N+1を実行するだけだと思います。誰かがそれをもっとエレガントに行う方法について提案があれば、私はそれを聞きたがっています。