Sqlite 外键约束 删除

在 SQLite 中,外键约束可以控制当主表中的记录被删除时,从表中相关联的记录应该如何处理。这通过在定义外键时使用 ON DELETE 子句来实现。

常用的 ON DELETE 选项有:

RESTRICT:默认行为,如果从表中有关联记录,主表记录不能被删除

CASCADE:删除主表记录时,自动删除从表中所有关联的记录

SET NULL:删除主表记录时,将从表中关联字段的值设为 NULL(要求从表字段允许为 NULL)

SET DEFAULT:删除主表记录时,将从表中关联字段设为默认值

NO ACTION:与 RESTRICT 类似,但检查时机不同

下面是一个示例,展示如何创建带有外键删除约束的表:

sql

-- 主表:用户表

CREATE TABLE users (

user_id INTEGER PRIMARY KEY AUTOINCREMENT,

username TEXT NOT NULL

);

-- 从表:订单表,带有外键约束

CREATE TABLE orders (

order_id INTEGER PRIMARY KEY AUTOINCREMENT,

user_id INTEGER,

order_date TEXT NOT NULL,

-- 外键约束,当用户被删除时,相关订单也被删除

FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE CASCADE

);

在这个例子中,当删除 users 表中的某个用户时,orders 表中所有属于该用户的订单会被自动删除(因为使用了 ON DELETE CASCADE)。

如果要使用其他删除策略,可以修改 ON DELETE 后面的关键字:

sql

-- 使用 SET NULL 策略

CREATE TABLE orders (

order_id INTEGER PRIMARY KEY AUTOINCREMENT,

user_id INTEGER,

order_date TEXT NOT NULL,

FOREIGN KEY (user_id) REFERENCES users(user_id) ON DELETE SET NULL

);

注意:SQLite 默认情况下外键约束是禁用的,需要先启用才能生效:

sql

PRAGMA foreign_keys = ON;

你需要在每次连接到数据库后执行这个命令来启用外键约束。

文件名精灵2025年最新版 机器翻译 AI智能
...
批量修改文件名称、文件夹名称

免费使用 功能无限制

全面接入机器自动翻译功能,主流AI大模型智能改名

方便快捷,支持正则表达式、无需安装功能齐全、支持定制无广告、无插件,放心使用。

免费下载
本站中所有的计算器的计算结果仅供参考,本站对此结果的准确性不承担任何责任,实际数额以银行/保险公司/国家相关机构确认的结果为准。
在线客服QQ:543690914,备案号: 苏ICP备15037649号-27。东海县白塔埠镇佳诚电脑经营部版权所有。