【发布时间】: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等等。
我还想从CUST001、CUST002 等获得我的Customer_ID 自动增量。
最后在ORDERS 表中,我想连接外键并将结果用作Invoice_ID 主键值,这样结果将类似于CUST001INVEN001、CUST002INVEN002、等等
这可行吗?还是我只是远远超出了 SQL 的领域,以至于这甚至没有意义或根本没有必要?非常感谢任何建议。
【问题讨论】:
-
只有
INTEGER PRIMARY KEY列/rowid会在没有显式值的情况下插入行时自动生成(您不需要而且经常需要don't want to use 错误命名的AUTOINCREMENT关键字)。当然,在您的用户界面代码中编写一些在数字和更人性化的东西之间进行转换的东西始终是一种选择。
标签: sql python-3.x sqlite