あるデータベースから別のデータベースに行を移動するプロセスがあります。一部の循環外部キー参照チェーンのため、古いデータベースから行を削除したり、新しいデータベースに行を挿入したりすることはできません。
操作全体がトランザクション1で発生するため、SQL Serverは、を呼び出すまで参照整合性の失敗を無視する必要がありますCOMMIT TRANSACTION
。
例2:
Table: Turboencabulators Table: Marselvanes
========================= =======================
PK TurboencabulatorID int /-> PK MarselvaneID int
^ MarselvanesID int --/ HasGrammeter bit
| PantametricFan varchar(50)
+------------------------------- TurboencabulatorID int
ターボエンカビュレーターを新しいテーブルに挿入しようとすると、マーセルベーンがすでに存在しないと失敗します。順序を逆にしても同じ問題があります。
古い行を削除しようとすると、もう一方が削除されるまで一方を削除できません。
私はnフェーズシステムを実行しようとしました。このシステムでは、すべての行が、外部キー制約がnullに設定されている列とともに挿入されます。次に、挿入されたすべての行を更新し、適切な欠落値を配置します。次に、ソース行を削除するために、FKの影響を受けるすべての列を無効にしてから、実際の行を削除します。3
私が本当に望んでいるのは、T-SQL操作を実行し、commitを呼び出そうとするまでSQLServerに通知しないようにすることです。
ノート
1分散
2私がもうやっていない架空の
3を考案しました