1

弱いエンティティに適切なキー値を挿入するのと、定義する強いエンティティを挿入するのに苦労しています。

これらの 2 つのエンティティ:

CREATE TABLE 'key' (
'id' INTEGER NOT NULL  PRIMARY KEY AUTOINCREMENT,
...

CREATE TABLE 'key_data_rsa' (
'id_key' INTEGER NOT NULL  PRIMARY KEY REFERENCES 'key' ('id'),
...

キー メタデータをテーブル 'key' に挿入し、対応するキー データをテーブル 'key_data_rsa' に、できれば 1 つのクエリで挿入する必要があります。

問題を理解しているように、「キー」の「ID」が最初に存在する必要があるため、「key_data_rsa」エントリが挿入される前にエントリ「キー」を挿入する必要があります。

問題は、これを 2 つのステップで行うと、「キー」エントリを見失うことです。「キー」の唯一の保証された一意のキーはその「ID」であり、挿入されるとすぐにできなくなります。 「id」を取得するためにもう一度選択します。

強力なエンティティへの適切な接続を維持するために、このシナリオで弱いエンティティにデータを挿入するにはどうすればよいですか?

スキームとユースケースに重大な問題がない限り、コメントや質問は控えてください。ありがとう。

-m。

4

1 に答える 1

1

関数last_insert_rowid()が役立つはずです。これは、ROWID を持つテーブルへの最新の成功した挿入の ROWID を返します。あなたの場合、 columnidはタイプINTEGER PRIMARY KEYであるため、行 ID のエイリアスとして扱われます (cf. sqlite コア関数)

弱いエンティティから挿入されたばかりの強いエンティティを参照すると、次のように動作するはずです。

insert into key values (null, ...);
insert into key_data_rsa values (last_insert_rowid(), ...);
于 2016-12-11T22:42:57.800 に答える