【问题标题】:Set multple primary keys with mixed syntax使用混合语法设置多个主键
【发布时间】:2020-11-13 06:27:30
【问题描述】:

我目前正在努力使用强制混合语法的多个主键。 我正在编写的脚本应该复制一个远程数据库,但我需要向表中添加另一个主键。

新键必须是“INTEGER AUTOINCREMENT”-键。

来自远程数据库的“CREATE TABLE”语句目前看起来像这样:

CREATE TABLE "Table_1" (id text, ord text, mod_date TEXT, val TEXT, PRIMARY KEY (id,ord));

我尝试并失败的是以下修改:

CREATE TABLE "Table_1" (_id INTEGER PRIMARY KEY AUTOINCREMENT, id text, ord text, mod_date TEXT, val TEXT, PRIMARY KEY (id,ord));

有没有办法实现这一点,或者我必须编写一个函数来解压缩“PRIMARY KEY(...)”-Part 以便能够为每个主键设置“PRIMARY KEY”-Statement?

【问题讨论】:

    标签: python sqlite


    【解决方案1】:

    一个表中不能有 2 个主键。
    您已将主键定义为 PRIMARY KEY (id,ord)

    但 SQLite 确实提供了您需要的东西,因为所有不是使用 WITHOUT ROWID 创建的表都是 Rowid tables
    因此,您的表中已经有一个名为 rowid 的自动递增列,尽管它未在表的 CREATE 语句中定义,但您可以使用它。
    这实际上是:

    rowid 表的真正主键(用作 在底层 B-tree 存储引擎中查找行的键)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2014-02-10
      • 2023-03-28
      相关资源
      最近更新 更多