是否有可能增加一个ON DELETE CASCADE
到表已经创建之后?
我的架构如下:
CREATE TABLE skills(name varchar, skill varchar, level int, foreign key(name) references runners(name), primary key(name, skill));
而且我想如果外键被删除级联。
是否有可能增加一个ON DELETE CASCADE
到表已经创建之后?
我的架构如下:
CREATE TABLE skills(name varchar, skill varchar, level int, foreign key(name) references runners(name), primary key(name, skill));
而且我想如果外键被删除级联。
SQLite的的ALTER TABLE
命令不能做你想做的。
然而,有可能绕过SQL解释并直接改变内部表定义。 SQLite的存储表定义为一个文本复制CREATE TABLE
在其命令sqlite_master
表 ; 看看这个查询的结果:
SELECT sql FROM sqlite_master WHERE type='table' AND name='skills';
您的级联规范添加到该字符串,然后启用写访问sqlite_master
与PRAGMA writable_schema=1;
写你的新的表定义到它:
UPDATE sqlite_master SET sql='...' WHERE type='table' AND name='skills';
然后重新打开数据库。
警告 :这仅适用于不改变表的磁盘格式的变化。 如果你作出这样的改变记录格式(如添加/删除字段,或修改任何变化rowid
),您的数据库将可怕炸毁。