私は2つのテーブルを持っており、一方が他方に対して外部キー関係を持っています
CREATE TABLE foo (
id INT NOT NULL PRIMARY KEY IDENTITY,
value VARCHAR(50) DEFAULT NULL,
);
CREATE TABLE bar (
id INT NOT NULL PRIMARY KEY IDENTITY,
foo_key INT NOT NULL
value VARCHAR(50) DEFAULT NULL,
);
パラメータ化されたADO.NETExecuteReaderを使用して新しい行を挿入しています。私のピクルスは、同じトランザクションで異なるテーブルに2行を挿入したい場合、つまりコミットする前に、foo.idがまだ与えられている値がわからないため、バーに行を挿入できないことです。どうやってそれをやりますか?つまり、bar.foo_keyに正しい値が割り当てられていることを確認するにはどうすればよいですか?実際にはまだそこにないので、それを選択しようとしても何も起こりません。ストアドプロシージャを使用してその場でキーを生成しようとする必要がありますか、それとも使用できる内部変数があるかもしれません。または、インサートに新しいIDを返す方法はありますか?外部キー宣言が必要ですか?それが役立つかどうかはわかりませんが、使用するIDがまだわからないためです。
一度にやりたい理由は、エラー処理のためです。エラーが発生した場合にすべてをロールバックできるようにしたいのです。