web-dev-qa-db-ja.com

外部キーを入れて関係を作成するために代理キー値を取得するにはどうすればよいですか?

代理キーである主キーの値を持つ外部キーを使用して、3つのテーブル間に2つの関係を作成しようとしています。しかし、外部キーには意味がなく、代理キーであるため、正しい値を入力する方法がわかりません。

これが私のテーブルです:

引用quoteID主キー、quoteValuequoteDatecurrency

TermStrucureComponent(TSComponentID PRIMARY KEY、タイプ)

InterestRaterateID主キー、quote FOREIGN KEY toquoteIDTermStructureComponentFOREIGN KEY toTSComponentIDtimeToMaturity

つまり、InterestRateテーブルに2つの関係があります。1つはQuoteで、もう1つはTermStructureComponentです。最初の2つのテーブル(外部キーなし)に行を挿入した後、それをInterestRateに挿入する必要があります。しかし、quoteTermStructureComponentの記入方法がわかりませんフィールドは代理キーであるため、他のテーブルではその値がわかりません。

どうすればいいですか?ご協力ありがとうございました

1
MarinD

代理キーが主キーとしてマークされた自動インクリメント整数であると仮定すると、それらはそのテーブルの「ROWID」になるため、SELECT last_insert_rowid()を使用して1回の挿入に追加された最後の値を読み取ることができます。これは、他のデータベースのscope_identityのように動作します。それぞれが前のレコードを置き換えるため、各行の挿入後にそれぞれを読み取る必要があります。

sqliteには、SQLServerのOUTPUT句やPostgresとOracleのRETURNING句に相当するものがないようです。そのため、生成された複数のIDを読み取る方法がわかりません。つまり、一度に1行ずつ実行する必要があります。

1
David Spillett