Ошибка SQL в отношении ограничения внешнего ключа - PullRequest
0 голосов
/ 08 марта 2019

В настоящее время я получаю следующую ошибку при попытке добавить одну из моих таблиц:

Ошибка добавления записи: сбой ограничения FOREIGN KEY: (INSERT INTO Stock (StockID, ItemName, MinAmountRequired, AmountInStock , Порядок? (Да / Нет) , DataLastUpdated , OrderNumber , SupplierRefrence , PurchaseID`) ЗНАЧЕНИЯ (1, ", 0,0,", ", 0,0,0);)

В настоящее время мои таблицы настроены так:

  1. 1020 * Фото *

    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 Ответ

1 голос
/ 08 марта 2019

Вы определили эти внешние ключи в таблице Stock:

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

означает, что значения в столбцах PurchaseID, OrderNumber, SupplierReference должны ссылаться на значения в столбцах таблиц Purchase, Orders и Supplier.
Но вы хотите сохранить 0 для всех этих столбцов, что, я уверен, не является значением какого-либо из столбцов, на которые есть ссылки, поскольку эти столбцы, на которые есть ссылки, определены как

PRIMARY KEY AUTOINCREMENT

и поэтому их значения равны > 0.
Передайте допустимые значения, которые существуют в этих 3 таблицах, и оператор будет успешно выполнен.

...