【问题标题】:How can i auto increment a custom primary key in sqlite3?如何在 sqlite3 中自动增加自定义主键?
【发布时间】:2019-05-11 12:57:57
【问题描述】:

我希望我的问题不会被标记为与 this one 重复,因为尽管本质上是相同的问题,但我希望使用 SQLite3 来完成此任务。

[场景]

我创建了 3 个数据库表,如下所示:

CREATE TABLE INVENTORY (
    Item_SKU INTEGER PRIMARY KEY AUTOINCREMENT,
    Item_Title TEXT,
    Item_Price REAL);
CREATE TABLE CUSTOMERS (
    Customer_ID INTEGER PRIMARY KEY AUTOINCREMENT,
    C_First_Name TEXT,
    C_Last_Name TEXT);
CREATE TABLE ORDERS (
    Invoice_ID INTEGER PRIMARY KEY AUTOINCREMENT,
    Customer_ID INTEGER,
    Item_SKU INTEGER,
    FOREIGN KEY(Customer_ID) REFERENCES CUSTOMERS(Customer_ID),
    FOREIGN KEY(Item_SKU) REFERENCES INVENTORY(Item_SKU));

我想要完成的是为我的所有主键使用自定义前缀,这样Item_SKU 将自动填充第一行类似INVEN001 的内容,然后自动递增到INVEN002 然后INVEN003等等。

我还想从CUST001CUST002 等获得我的Customer_ID 自动增量。

最后在ORDERS 表中,我想连接外键并将结果用作Invoice_ID 主键值,这样结果将类似于CUST001INVEN001CUST002INVEN002、等等

这可行吗?还是我只是远远超出了 SQL 的领域,以至于这甚至没有意义或根本没有必要?非常感谢任何建议。

【问题讨论】:

  • 只有INTEGER PRIMARY KEY 列/rowid 会在没有显式值的情况下插入行时自动生成(您不需要而且经常需要don't want to use 错误命名的AUTOINCREMENT 关键字)。当然,在您的用户界面代码中编写一些在数字和更人性化的东西之间进行转换的东西始终是一种选择。

标签: sql python-3.x sqlite


【解决方案1】:

您为什么不以编程方式执行此操作?创建一个新列并在其中放入一个值,将前缀与 PRIMARY KEY 的值连接起来?那么当每个表中的条目创建时,您同时添加该值?

【讨论】:

    猜你喜欢
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 2016-11-11
    • 2020-11-03
    • 2014-12-07
    • 1970-01-01
    相关资源
    最近更新 更多