DB1で1つのテーブル(DB1.t1)に1つのカラムを追加し、同じ名前のテーブルに同じ行のレプリカを作成すると、 )を別のDB2にインストールします。挿入された行のIDを使用して、DB2の別のテーブル(DB2.t2)にいくつかの行を追加する必要があります。1つのトランザクション内に複数のデータベースがある場合の外部キーの問題
問題は、DB1.t1とDB2.t2に1つのトランザクションで挿入する必要があるということです。これを実行しようとすると、DB1.t1は正常に挿入されますが、コミットされていないためDB2.t1には行が含まれていないため、DB2.t2は新しい行(外部キーがありません)を挿入できませんでした正しく。
1つのオプションはDB1トランザクションをコミットしてから、DB2操作を行いますが、他の機能も関連しています。それを達成するための最良の方法を提案してください。
私はあなたが尋ねたのと同じ方法でやっています。私はDB1上で1つのSPを呼び出しており、SPからは2番目のDB2 spが呼び出されています。どちらも1つのトランザクションの下にありますが、私はDB1からIDを取得できますが、同じIDはDB2上にないため、常に例外がスローされてロールバックされます。 – hungryMind