0

所以我有一个表,我用新的约束创建了一个表,并试图将数据从旧表移动到新表中,但它不起作用,它不会给出错误或任何东西。

我创建了旧表:

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

刚刚""从 Element 和 Elements中删除

于 2013-08-17T04:19:57.663 回答
1

该问题已通过删除该表并在其中不包含所有引号的情况下重新创建它来解决。我不知道这是 SQLite 数据库浏览器中的错误还是什么。我使用了下面的语句并且运行良好:

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 SELECT * FROM Elements
于 2013-08-17T04:55:23.063 回答
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 回答