SQLite Studio 外键设置

本文深入解析外键约束在数据库设计中的应用,包括父键与子键的关系,以及ONDELETE和ON UPDATE从句如何配置外键行为。探讨了不同行为如NO ACTION、RESTRICT、SET NULL、SET DEFAULT和CASCADE在删除或更新父键时对子键的影响。

建父表

注:外键约束的父键在父表里是主键. 如果它们不是主键, 那么父键栏 必须受一个UNIQUE约束 或者 有一个 UNIQUE 索引.不然会出现 Error while committing new row: foreign key mismatch

建子表

设置外键

 

其中

外键的ON DELETE和 ON  UPDATE从句, 可以用来配置  当从父表中删除 某些行时发生的行为(ON DELETE).  或者 修改存在的行的父键的值, 发生的行为(ON UPDATE)

单个外键约束可以为ON DELETE和ON UPDATE配置不同的行为.   外键行为在很多时候类似于 触发器(trigger)

ON DELETE和ON UPDATE的行为是 NO ACTION,  RESTRICT, SET NULL,  SET DEFAULT 或者 CASCADE

如果没有明确指定星闻,那么默认就是NO ACTION

NO ACTION: 当父键被修改或者删除时, 没有特别的行为发生

RESTRICT:  存在一个或者多个子键对应于相应的父键时,  应用程序禁止删除(ON DELETE RESTRICT)或者修改(ON UPDATE RESTRICT) 父键

RESTRICT与普通的外键约束的区别是,  当字段(field)更新时, RESTRICT行为立即发生

SET NULL: 父键被删除(ON DELETE SET NULL) 或者修改 (ON UPDATE SET NULL)

SET DEFAULT: 类似于SET NULL

CASCADE: 将实施在父键上的删除或者更新操作,传播给与之关联的子键.

对于 ON DELETE CASCADE, 同被删除的父表中的行 相关联的子表中的每1行,也会被删除.

对于ON UPDATE CASCADE,  存储在子表中的每1行,对应的字段的值会被自动修改成同新的父键匹配

 

结果

父表---classID

子表--studentClass

### SQLitestudio 中主的概念解释 #### 主 (Primary Key) 在关系型数据库中,每张表可以有一个或多个字段被定义为主。主用于唯一标识表中的每一行记录。这意味着在同一张表内,任何两行的数据都不能拥有相同的主值。此,主不允许为空。 对于 SQLiteStudio 用户来说,在创建新表时可以通过指定某个字段作为 `PRIMARY KEY` 来设置该字段为主[^1]: ```sql CREATE TABLE Department ( department_id INTEGER PRIMARY KEY, name TEXT NOT NULL ); ``` 上述代码片段展示了如何在 SQLite 数据库中创建名为 `Department` 的表,并将 `department_id` 字段设为主。 #### (Foreign Key) 当一张表内的某一列指向另一张表的主时,则此列为。它用来建立两张或多张表之间的联系。在约束下,子表中列所允许输入的值要么是父表中存在的对应主值之一,或者是NULL(如果设置了允许空值的话)。 下面的例子说明了如何在 SQLiteStudio 创建包含约束的新表 `Employee` ,其中 `department_id` 是一个引用自 `Department` 表的: ```sql CREATE TABLE Employee ( employee_id INTEGER PRIMARY KEY, first_name TEXT NOT NULL, last_name TEXT NOT NULL, department_id INTEGER, FOREIGN KEY(department_id) REFERENCES Department(department_id) ); ``` 这段 SQL 语句不仅建立了两个实体间的关系,还确保了数据的一致性和完整性,因为只有存在于 `Department` 表里的 `department_id` 才能被插入到 `Employee` 表里对应的字段中去。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值