创建sqlite3表后,向其添加删除级联行为

创建sqlite3表后,向其添加删除级联行为,sqlite,ddl,Sqlite,Ddl,在创建表后,是否可以在删除级联中向表中添加 我的模式如下: CREATE TABLE skills(name varchar,skill varchar,level int,外键(name)引用runner(name),主键(name,skill)) 如果外键被删除,我想进行级联。SQLite无法完成您想要的任务 但是,可以绕过SQL解释器直接更改内部表定义。 SQLite将表定义存储为its中CREATE table命令的文本副本;检查此查询的结果: SELECT sql FROM sqlit

在创建表后,是否可以在删除级联中向表中添加

我的模式如下:

CREATE TABLE skills(name varchar,skill varchar,level int,外键(name)引用runner(name),主键(name,skill))

如果外键被删除,我想进行级联。

SQLite无法完成您想要的任务

但是,可以绕过SQL解释器直接更改内部表定义。 SQLite将表定义存储为its中
CREATE table
命令的文本副本;检查此查询的结果:

SELECT sql FROM sqlite_master WHERE type='table' AND name='skills';
将级联规范添加到该字符串中,然后使用启用对
sqlite\u master
的写访问,并将新表定义写入其中:

UPDATE sqlite_master SET sql='...' WHERE type='table' AND name='skills';
然后重新打开数据库


警告:这仅适用于不改变表的磁盘格式的更改。如果您确实做了任何更改来更改记录格式(例如添加/删除字段,或修改
rowid
),您的数据库将爆炸得可怕。

删除外键并重新创建它?@njk我相信无法删除sqlite中的约束。