0

そのため、新しい制約を使用して作成したテーブルが1つあり、データを古いテーブルから新しいテーブルに移動しようとしましたが、機能していません。エラーなどは発生しません。

私は古いテーブルを作成しました:

CREATE TABLE Elements (
    _id INTEGER PRIMARY KEY, 
    Element TEXT, 
    Symbol TEXT, 
    MW TEXT)

次で作成された新しいテーブル:

CREATE TABLE "Element" (
    "_id" INTEGER PRIMARY KEY AUTOINCREMENT,
    "ElementName" TEXT,
    "Symbol" TEXT,
    "MW" REAL,
    UNIQUE("ElementName") ON CONFLICT ABORT,
    UNIQUE("Symbol") ON CONFLICT ABORT)

これらはデータを移動するためのステートメントですが、それらはすべて何も挿入しませんでした:

INSERT INTO "Element" ("ElementName","Symbol","MW")
SELECT "Element", "Symbol","MW"
FROM "Elements"

INSERT INTO "Element"
SELECT * FROM "Elements"

INSERT INTO Element (ElementName,Symbol,MW)
SELECT Element,Symbol,CAST(MW AS REAL) FROM Elements

INSERT INTO Element (_id,ElementName,Symbol,MW)
SELECT NULL,Element,Symbol,MW
FROM Elements

私はそれを把握することはできません。データを移動するための挿入ステートメントの何が問題なのか教えてください。最大の変更点は、テーブルの制約です。

4

3 に答える 3

1

私は試してみましたが、これでうまくいきました。

INSERT INTO Element SELECT * FROM Elements

""要素と要素から削除されたばかり

于 2013-08-17T04:19:57.663 に答える
0

どうですか:

INSERT INTO Element (ElementName, Symbol, MW)
SELECT o.Element, o.Symbol, o.MW
FROM Elements as o

それが失敗した場合は、これらの出力を比較してください。

SELECT COUNT(*) FROM Elements;
SELECT COUNT(Element) FROM (SELECT DISTINCT Element FROM Elements);
SELECT COUNT(Symbol) FROM (SELECT DISTINCT Symbol FROM Elements);
于 2013-08-17T04:40:20.077 に答える