gpt4 book ai didi

sqlite - 创建后在sqlite3表中添加ON DELETE CASCADE行为

转载 作者:行者123 更新时间:2023-12-03 18:12:02 26 4
gpt4 key购买 nike

创建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 command无法执行您想要的操作。

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

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),数据库将崩溃。

关于sqlite - 创建后在sqlite3表中添加ON DELETE CASCADE行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34009863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com