代码之家  ›  专栏  ›  技术社区  ›  Gregor Brandt

SQLITE:无法删除未命名的主键

  •  1
  • Gregor Brandt  · 技术社区  · 17 年前

    PRIMARY KEY (`column`);
    

    我现在需要删除该主键并创建一个新的主键。创建一个新的是容易的,但删除原来的似乎是困难的一部分。如果我这样做

    .indices  tablename
    

    我没有主键。有些程序将主键显示为

    Indexes: 1
        [] PRIMARY
    

    [] .

    有什么想法吗?

    3 回复  |  直到 15 年前
        1
  •  2
  •   Richard    17 年前

        2
  •  2
  •   Nathan Wailes    6 年前

    你不能。

    PRAGMA INDEX_LIST('MyTable');
    

    'sqlite_autoindex_MyTable_1' .

    但不幸的是你不能删除这个索引。。。

    sqlite> drop index sqlite_autoindex_MyTable_1;
    SQL error: index associated with UNIQUE or PRIMARY KEY constraint cannot be dropped
    

        3
  •  0
  •   Jeff Ferland    17 年前
    select * from sqlite_master;
    table|x|x|2|CREATE TABLE x (a text, b text, primary key (`a`))
    index|sqlite_autoindex_x_1|x|3|
    

    您将看到,从我的quick hack返回的第二行在第二列中有索引名,在第三列中有表名。试试看这个名字是否有用。

    推荐文章