問題タブ [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 投票する
1 に答える
724 参照

c# - Entity Framework の自己参照エンティティの削除

次のようなフォルダー構造があります。

問題は、それらをカスケード削除する方法です(つまり、folder2 を削除すると、すべての子も削除されます)。MSSQL で許可されていないため、ON DELETE アクションを設定できません。いくつか提案をいただけますか?

更新:このストアド プロシージャを作成しました。そのままにしておくことはできますか、それとも変更が必要ですか?

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

c# - C#-フォルダ削除時のファイルシステムイベントを予測する

これは、これを実装する際のベストプラクティスについての質問です。

FileSystemWatcherファイルとフォルダに対するユーザーの変更について通知する必要があるがあります。サブディレクトリも監視されます。同じディレクトリで、私のプログラムも時々変更されます。FileSystemWatcherこれらのプログラム変更のイベントを検出したくありません。

私の最初の実装は、予想されるイベントを追加できるリストでした。ファイルシステムイベントを取得したら、リストを確認し、存在する場合は無視します。これはあまり堅牢に聞こえませんが、機能しているようです。

今、私は本当の問題を検出しました:
D:はによって監視されていFileSystemWatcherます。
次のような2つのフォルダーがあります。D:\ folder1 \ folder2
ここで、アプリケーションでfolder1(folder2を含む)を削除します。そこで、削除リストにD:\folder1を追加しました。それから私はのようなものを呼びますDirectory.Delete(@"D:\folder1", true)。今、私はfolder1が例外を超えて(なぜ)削除できないことに気づきました。リストから削除エントリを削除しましたが、folder2はすでに削除されており、彼のFileSystemEventを取得しています。したがって、D:\ folder1\folder2のFileSystemイベントを取得します。私のプログラムは、ユーザーがこのフォルダーを削除し、間違ったことをしていると考えています。

私は今いくつかのアイデアを持っていました:

1.)すべてのファイルとすべてのフォルダを独自に削除して、フォルダを再帰的に削除します。これで、すべてのサブフォルダーを取得し、独自のリストエントリを提出します。私はすでにそれを実装しましたが、それは非常に非常に遅いです。

FileSystemWatcher2.)私のリストを時代遅れにするために賢いフィルターを入れるより良い方法があるかもしれませんか?

3.)すべてを削除できる場合にのみ、ディレクトリツリーを削除できる可能性があります。したがって、失敗した場合でもすべてがあり、そうでない場合はすべてが削除されます。これは私にとって最もエレガントな解決策のようですが、これが可能かどうかさえわかりませんか?

4.)私のソフトウェアですべてのファイルとフォルダを排他的にロックすることは可能ですか?これで問題がなければ、1つの削除コマンドですべてを削除できるはずです。

私は他の追加の解決策も受け入れています。

1を編集して、より明確にします。

フォルダに対するユーザーアクションのみを「表示」したい。ここで自分のプログラムから物事を操作する場合、このイベントを見たくありません。

私の実装では、フォルダーがロックされていて削除できない場合、サブフォルダーのイベントを取得します。

私は英語を母国語としないので、英語で説明するのはそれほど簡単ではありません;)。

編集2:

FileSystemWatcher5.)定義されたプロセスからのすべてのイベントをフィルタリングすることは可能ですか?

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

objective-c - コアデータは、カスケード削除ルールを使用してオブジェクトを即座に削除しますか、それとも保存しますか?

Core Dataモデルでは、エンティティAは、削除ルールがに設定されたエンティティBとの関係を持っていCascadeます。オブジェクトBは、が呼び出されるとすぐに削除されます[context deleteObject:A]か、それとも、オブジェクト検証の場合のように、CoreDataは[contextsave:&error]メソッドを待機しますか?

Aを削除した後、コンテキスト内でBを検索し、関係を確立するオブジェクトCを作成できるかどうか疑問に思います。それはBが削除されるのを防ぎますか?

乾杯、エリックポール。

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

sql-server - それぞれ別のテーブルへのカスケード削除を持つ 2 つのテーブルを結合する、リンクされたテーブルでのカスケード削除。どのように?

次のオブジェクトを SQL のテーブルとして想定してみましょう。

  • Companies
  • Employees(企業を指す)
  • Meetings(企業も指す)

また、従業員は会議に参加できるため、リンク テーブルがあります。

  • EmployeeMeetings(つまり、従業員と会議の両方への FK)

さらに、会社のテーブルに触れることはできません (たとえば、これに対するトリガーはありません)。私がしたいのは、次のことです。

  1. 会社が削除されると、すべての従業員が削除されます
  2. 会社が削除されると、すべての会議が削除されます
  3. 従業員または会議のいずれかが削除されると、すべてのEmployeeMeeting記録が削除されます

残念ながら、これが恐ろしい「サイクルまたは複数のカスケードパスを引き起こす可能性がある」ことを引き起こすため、私は立ち往生しています。制約がある場合、これをどのように回避しますか? 両方の FK を入れることさえできないと思います。または、会社を削除した後、FK がEmployeeMeetingsこれを防ぐため、従業員または会議のいずれかを削除できないというリスクがあります。右?

0 投票する
0 に答える
220 参照

sql-server-2005 - 既存システムへの「ソフト削除」の追加

TableAたとえば、多くのストアド プロシージャ、関数を実行するシステムを使用しています。これらの注文を削除できる方法が必要ですが、それらを記録に残します。

私たちが検討したオプションの 1 つは、DeleteフィールドをTableA入れて、すべての sprocs と関数を追加することです。

私たちが検討した別のオプションはv_TableA、テーブルではなく、このビューから読み取るようにすべての sprocs と関数を調べて変更するようなものと呼ばれるビューを作成することです。

どちらも多くの作業を伴うため、将来システムに変更を加える際には覚えておく必要があります。

これを行うには、次のようなより良い方法があることを願っています。

しかし、私はこれが不可能であることを知っています。どんな助けでも大歓迎です。

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

sql - MS SQL「ON DELETE CASCADE」複数の外部キーが同じテーブルを指していますか?

同じテーブルを指す複数の外部キーでカスケードが必要な問題があります..

基本的に、インサイト テーブルのレコード 1 つまたは 2 つが削除されると、関係も削除する必要があります。

私はこれを試しました:

これにより、カスケードが「サイクルまたは複数のカスケード パスを引き起こす可能性がある」という警告が表示されます。

したがって、insight_id だけにカスケードを追加しようとすると、次のようになります。

DELETE ステートメントが REFERENCE 制約と矛盾しています

何か案は?

ありがとう

ダニエル

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

c# - カスケード削除なしで最初に EF4 CTP5 コードを使用する

最初にコードを使用し、次のステートメントを使用してすべての外部キーのカスケード削除をオフにしました。

Invoice と InvoiceLine の 2 つのクラスがあります。

請求書とそれに関連するすべての請求書明細を削除したい場合に問題が発生します。次のコードは機能します。

しかし、for ループで SaveChanges アクションを削除すると機能しません。

中間の SaveChanges を実行する必要があるのはなぜですか? *また、なぜ請求書の削除ではなく、請求書の DeleteObject メソッドを呼び出さなければならないのでしょうか? *

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

entity-framework-4 - Entity Framework: CodeFirst で削除ルールを設定する

EF4 CTP 5、CodeFirst を使用しています。

最初に私のクラスを見てください:

私の目標は、Guest-Language 関係に特定の「削除ルール」を設定することです。言語が削除されたときに、対応するゲストを削除したくありません(カスケード削除はありません)。代わりに、ゲストの LanguageID を「Set NULL」にする必要があります。

流暢な API がここで私をサポートしてくれることを期待していました。しかし、必要なオプションを提供しない .WillCascadeOnDelete(bool) 以外に役立つものは見つかりませんでした。何か見逃しましたか?それとも、これは CTP 5 に実装されていないだけですか?

助けてくれてありがとう!

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

ruby-on-rails - Rails: 関連付けを失わずにユーザーを削除 (またはユーザーを残す他の方法)

ユーザーがさまざまな「判断」を作成できるRailsアプリケーションがあります。すべてが少し織り交ぜられており、ユーザークラスに接続されているいくつかのクラスがあります。

ユーザーに自分のアカウントを「破棄」させると、明らかに、ユーザーが持っていた関連付けが私にnilオブジェクトを与えます。したがって、たとえば、すべての判断をトラバースすると、この特定のユーザーが自分のアカウントを削除 (破棄) した場合、判断を作成したユーザーを取得できません。

  • そのような場合のRailsでのベストプラクティスは何ですか?
  • ユーザーに非アクティブのフラグを立てても、アカウントを維持することは問題ないと考えられますか?
  • ユーザー アカウントを削除して、他のクラスの関連情報を置き換えることはできますか?
0 投票する
1 に答える
1263 参照

symfony1 - symfony 1.4関連テーブルのpreDeleteイベントの連鎖

Symfony 1.4 で preDelete() イベントをチェーンする方法はありますか?

マスターとスレーブの 2 つのテーブルがあります。schema.yml で、マスター レコードが削除されたときにスレーブ レコードが削除を CASCADE するように定義しました。

また、スレーブの削除プロセスでは、スレーブ レコード定義の preDelete イベント メソッドでコーディングする予定の前処理を実行する必要があります。

スレーブ レコードを単独で削除すると、この preDelete() イベントにアクセスできますが、マスター レコードを介してスレーブ レコードを削除すると、マスター レコード定義の preDelete() イベントにしかアクセスできません。マスター経由でスレーブの preDelete イベントにアクセスできますか?

関連するコードは次のとおりです。

スキーマ.yml

lib/model/doctrine/Master.class.php

lib/model/doctrine/Slave.class.php