删除级联上的SQLite外键不起作用

删除级联上的SQLite外键不起作用,sqlite,cascade,Sqlite,Cascade,我正在SQLite 3.16.0版上运行以下脚本,wtf.sql: PRAGMA foreign_keys = ON; CREATE TABLE 'ZIP'( 'Zip' INTEGER PRIMARY KEY NOT NULL, 'City' TEXT NOT NULL, 'State' TEXT NOT NULL ); CREATE TABLE 'ADDRESS'( 'Address_id' INTEGER PRIMARY KEY AUTOINCREMENT, 'Lin

我正在SQLite 3.16.0版上运行以下脚本,
wtf.sql

PRAGMA foreign_keys = ON;

CREATE TABLE 'ZIP'(
  'Zip' INTEGER PRIMARY KEY NOT NULL,
  'City' TEXT NOT NULL,
  'State' TEXT NOT NULL
);
CREATE TABLE 'ADDRESS'(
  'Address_id' INTEGER PRIMARY KEY AUTOINCREMENT,
  'Line_1' TEXT NOT NULL,
  'Line_2' TEXT,
  'Zip' INTEGER NOT NULL,
  FOREIGN KEY('Zip') REFERENCES ZIP('Zip') ON DELETE CASCADE
);

INSERT OR IGNORE INTO ZIP('Zip','City','State')
  VALUES ('90210','Beverly Hills','CA')
;
INSERT INTO ADDRESS('Line_1','Line_2','Zip')
  VALUES ('1234 Overpriced House Street','c/o Bob','90210')
;
DELETE FROM ADDRESS
  WHERE Zip = '90210'
;
SELECT *
  FROM ZIP
;
在bash中键入以下内容:

$ sqlite3 bits-n-books.db < wtf.sql
我需要做什么才能正确地进行数据级联

INSERT INTO ADDRESS(Line_1,Line_2,Zip)
  VALUES ('1234 Overpriced House Street','c/o Bob','90210'),
         ('667 Another Street','2nd row','90210');

DELETE FROM ADDRESS WHERE Line_2 = '2nd row';
现在该怎么办?是否应删除所有引用
90210
的其他地址

删除父行时,将删除所有子行。在这种情况下,这意味着从
ZIP
中删除一行将删除所有相应的
ADDRESS
行。在另一个方向上没有类似的机制

INSERT INTO ADDRESS(Line_1,Line_2,Zip)
  VALUES ('1234 Overpriced House Street','c/o Bob','90210'),
         ('667 Another Street','2nd row','90210');

DELETE FROM ADDRESS WHERE Line_2 = '2nd row';