Database-Design

外鍵約束失敗:SQlite3

  • January 21, 2020

我有兩個表,創建如下,

sqlite> CREATE TABLE Artists(
  ...> ArtistId INTEGER PRIMARY KEY,
  ...> ArtistName TEXT NOT NULL
  ...> );
sqlite> CREATE TABLE Albums(
  ...> AlbumId INTEGER PRIMARY KEY,
  ...> AlbumName TEXT NOT NULL,
  ...> Year TEXT NOT NULL,
  ...> ArtistId INTEGER NOT NULL,
  ...> FOREIGN KEY(ArtistId) REFERENCES Artists(ArtistId)
  ...> );

.table返回以下內容,

sqlite> .table
Albums   Artists

外鍵雜注設置為ON

sqlite> PRAGMA foreign_keys;
1

但是,當我嘗試按如下方式插入數據時,導致 FOREIGN KEY 約束失敗。

sqlite> INSERT INTO Albums VALUES (NULL, 'Killers', '1981', 7);
Error: FOREIGN KEY constraint failed
sqlite>

我是一名數據庫學習者。有人能指出我做錯了什麼嗎?

您現在嘗試插入值列表中不存在的Albums.ArtistId值 ( )。所以插入失敗。7``Artisis.ArtistId

您不能插入 的專輯<unknown>,FK 聲稱這是不可能的,並且伺服器阻止了這一點。

先插入藝術家ArtistId=7,然後插入他的專輯。

引用自:https://dba.stackexchange.com/questions/257845