0

我研究了如何使用 SQLite 删除列。由于缺少 DROP COLUMN 语句,我正在考虑使用以下解决方法:

从 SQLite 表中删除列

这涉及将所有数据移动到临时表中,删除原始数据,然后重新创建它。

如果我对要修改的表有级联删除依赖项,如何防止任何依赖表丢失数据?

前任。

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 中删除列“虚拟”,但我不想影响表 B 中的任何行。可以这样做吗?

4

2 回答 2

3

可以使用 PRAGMA禁用外键约束。只需PRAGMA foreign_keys = off在删除记录之前执行。

于 2013-08-17T17:15:33.417 回答
0

级联删除基于记录(行)而不是属性(列)。删除虚拟列不会导致任何级联删除,因为您没有从父表中删除任何记录。

于 2013-08-17T14:43:53.667 回答