级联删除基于记录(行)而非属性(列)。删除伪列不会导致任何级联删除,因为您没有从父表中删除任何记录。
我研究了如何使用SQLite删除列。由于缺少DROP COLUMN语句,我正在考虑使用以下解决方法:
从SQLite表中删除列
这包括将所有数据移动到一个临时表中,删除原始数据,然后重新创建它
如果我对要修改的表有级联删除依赖项,如何防止任何依赖表丢失数据?
Ex。
CREATE TABLE A (
id INTEGER PRIMARY KEY,
name TEXT,
dummy INTEGER
)
CREATE TABLE B (
id INTEGER PRIMARY KEY,
name TEXT,
a_id INTEGER,
FOREIGN KEY (a_id) REFERENCES A(id) ON DELETE CASCADE
)
假设我想从表A中删除列"dummy",但我不想影响表B中的任何行。这能做到吗?
可以使用PRAGMA禁用外键约束。删除记录之前只需执行PRAGMA foreign_keys = off
。