17

次の表があります。

[id,lang,data]

主キーの場所id

id,langテーブルの内容を失わずに主キーを変更したい 。変更するために実行する必要があるクエリは何ですか

ありがとう

4

1 に答える 1

49

@GarnerJosh のコメントによると、単一のコマンドを実行して変更することはできません。SQLite では、既存のテーブル構造を変更することはできません。代わりに、複合主キーを持つ新しいテーブルを作成し、データをコピーします。

CREATE TABLE my_table_copy( 
    id INTEGER, 
    lang INTEGER,
    data TEXT,
    PRIMARY KEY (id, lang)
);
INSERT INTO my_table_copy (id, lang, data)
   SELECT id, lang, data FROM my_table;
DROP TABLE my_table;
ALTER TABLE my_table_copy RENAME TO my_table;
于 2013-06-03T16:57:22.593 に答える