有关外键约束的SQL错误

时间:2019-03-08 17:27:03

标签: sqlite db-browser-sqlite

当我尝试添加到我的一张桌子时,当前出现以下错误:

  

添加记录时出错:FOREIGN KEY约束失败:(将INERT插入StockStockIDItemNameMinAmountRequired,AmountInStock ,订单?(是/否), DataLastUpdated , OrderNumber , SupplierRefrence , PurchaseID`)值(1,“,0,0,”,“,0,0,0);)

目前,这是我设置表格的方式:

  1. 库存

    CREATE TABLE Stock ( StockID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE, ItemName TEXT NOT NULL, MinAmountRequired INTEGER NOT NULL, AmountInStock INTEGER NOT NULL, Order? (Yes/No) TEXT NOT NULL, DataLastUpdated TEXT NOT NULL, OrderNumber INTEGER NOT NULL UNIQUE, SupplierReference INTEGER NOT NULL, PurchaseID INTEGER NOT NULL UNIQUE, FOREIGN KEY(PurchaseID) REFERENCES Purchase(PurchaseID), FOREIGN KEY(OrderNumber) REFERENCES Orders(OrderNumber), FOREIGN KEY(SupplierReference) REFERENCES Supplier(SupplierReference));

  2. 订单

    CREATE TABLE Orders (
      OrderNumber   INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
      CustomerReferenceNumber   INTEGER NOT NULL UNIQUE,
      OrderDate TEXT NOT NULL,
      ItemName  TEXT NOT NULL UNIQUE);
    
  3. 供应商

    CREATE TABLE Supplier (
      SupplierReference INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
      Name  TEXT NOT NULL UNIQUE,
      Address   TEXT NOT NULL UNIQUE,
      ContactNumber INTEGER NOT NULL UNIQUE);
    
  4. 购买

    CREATE TABLE Purchase (
      PurchaseID    INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE,
      Date  TEXT NOT NULL,
      AmountSpent   REAL NOT NULL);
    

1 个答案:

答案 0 :(得分:1)

您已在表Stock中定义了这些外键:

FOREIGN KEY(PurchaseID) REFERENCES Purchase(PurchaseID),
FOREIGN KEY(OrderNumber) REFERENCES Orders(OrderNumber),
FOREIGN KEY(SupplierReference) REFERENCES Supplier(SupplierReference)

表示列PurchaseIDOrderNumberSupplierReference中的值需要引用表PurchaseOrders和{{1 }}。
但是您想将0存储到所有这些列中,我确定这不是任何引用列的值,因为这些引用列定义为

Supplier

,因此它们的值为PRIMARY KEY AUTOINCREMENT
传递这3个表中确实存在的有效值,该语句将成功执行。