0

我正在尝试制作一个连接 3 个不同表的关系数据库。主程序数据库包含供应商,链接到每个供应商的发票,然后发票链接到在该发票中购买的项目。

tempcur.execute("""CREATE TABLE program (
                     vendorid INTEGER PRIMARY KEY, 
                     vendor TEXT, 
                     phone TEXT, 
                     store INTEGER)""")

tempcur.execute("""CREATE TABLE dairystore (
                     invoice INTEGER REFERENCES program(vendorid), 
                     date VARCHAR)""")

tempcur.execute("""CREATE TABLE invoices(
                     item INTEGER REFERENCES dairystore(invoice), 
                     shipped VARCHAR, 
                     description TEXT, 
                     weight INTEGER, 
                     price INTEGER, 
                     amount INTEGER)""")
4

1 回答 1

1

dairystore不,你的表格有误。它应该是以下内容:

CREATE TABLE dairystore (
  invoice INTEGER  PRIMARY KEY,
  vendor INTEGER REFERENCES program(vendorid), 
  date VARCHAR
)

您正在尝试dairystore.invoiceinvoices表中引用,因此dairystore.invoice必须是记录的 id。在您的代码dairystore.invoice中不能是记录的 id,因为它是引用的,program.vendorid并且它的值将等于program表中记录的 id。

于 2012-05-03T16:35:21.660 回答