0

SQLite データベースでいくつかのデータ更新を処理するためにフラッシュ ビルダーを使用しています。

T1 と T2 という名前の異なる 2 つの同一のテーブルを作成しました。

CREATE TABLE T1
(
  id int NOT NULL,
  theData text,
  PRIMARY KEY(id)
);

CREATE TABLE T2
(
  id int NOT NULL,
  theData text,
  PRIMARY KEY(id)
);

また、いくつかのテスト データを T2 に入れました。

INSERT INTO T2 (id,theData) VALUES (1,'THEDATA-AA');
INSERT INTO T2 (id,theData) VALUES (2,'THEDATA-BB');
INSERT INTO T2 (id,theData) VALUES (3,'THEDATA-CC');
INSERT INTO T2 (id,theData) VALUES (4,'THEDATA-DD');

挿入を確認するには、sqlite コマンド ラインで「SELECT * FROM T2」を入力します。

1|THEDATA-AA
2|THEDATA-BB
3|THEDATA-CC
4|THEDATA-DD

次に、flex デスクトップ プロジェクトで次のように sql ステートメントを実行します。

INSERT OR REPLACE INTO T1 SELECT * FROM T2;

次に、sqlite コマンド ライン環境でデータを確認しようとしました。

sqlite> select * from t1;
|THEDATA-AA
|THEDATA-BB
|THEDATA-CC
|THEDATA-DD

最初の列(id)のデータはどこにありますか? 注: id は PK だけでなく NOT NULL にも設定されます。

sqlite> select id from t1;
sqlite>

記録がない?!

sqlite> select thedata from t1;
THEDATA-AA
THEDATA-BB
THEDATA-CC
THEDATA-DD
sqlite>

「theData」列を選択したときに表示されるデータ。

次に、いくつかのテストを実行して、次のことを確認しました。

  1. 「T1 SELECT * FROM T2 に挿入または置換;」SQLITEコマンドラインで実行すると正常に動作します。
  2. ターゲット テーブルに 1 つの主キーがある場合にのみ発生します。つまり、2 つ以上の主キーを持つテーブルは正常に機能しました。
  3. 「INSERT OR IGNORE」も主キー値の挿入に失敗しました。
  4. 列の順序を変更しても役に立ちませんでした。
  5. 列名を追加しても役に立たなかった: "INSERT OR REPLACE INTO T1 (id,theData) SELECT id,theData FROM T2" 結果は同じです。

インターネットで答えを見つけようとしましたが、失敗しました。何か案は?

4

0 に答える 0