代理キーである主キーの値を持つ外部キーを使用して、3つのテーブル間に2つの関係を作成しようとしています。しかし、外部キーには意味がなく、代理キーであるため、正しい値を入力する方法がわかりません。
これが私のテーブルです:
引用(quoteID主キー、quoteValue 、quoteDate、currency)
TermStrucureComponent(TSComponentID PRIMARY KEY、タイプ)
InterestRate(rateID主キー、quote FOREIGN KEY toquoteID、TermStructureComponentFOREIGN KEY toTSComponentID、timeToMaturity)
つまり、InterestRateテーブルに2つの関係があります。1つはQuoteで、もう1つはTermStructureComponentです。最初の2つのテーブル(外部キーなし)に行を挿入した後、それをInterestRateに挿入する必要があります。しかし、quoteとTermStructureComponentの記入方法がわかりませんフィールドは代理キーであるため、他のテーブルではその値がわかりません。
どうすればいいですか?ご協力ありがとうございました
代理キーが主キーとしてマークされた自動インクリメント整数であると仮定すると、それらはそのテーブルの「ROWID」になるため、SELECT last_insert_rowid()
を使用して1回の挿入に追加された最後の値を読み取ることができます。これは、他のデータベースのscope_identity
のように動作します。それぞれが前のレコードを置き換えるため、各行の挿入後にそれぞれを読み取る必要があります。
sqliteには、SQLServerのOUTPUT
句やPostgresとOracleのRETURNING
句に相当するものがないようです。そのため、生成された複数のIDを読み取る方法がわかりません。つまり、一度に1行ずつ実行する必要があります。