创建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中的约束。