问题描述
我对 sqlITE 中的 FOREIGN KEYS 有一些疑问,因为有 2 个语法选项。
假设我们已经有了父表
CREATE TABLE parent (id,some_text)
我们可以使用两种方式创建带有外键的子表:
- CREATE TABLE child(id,some_child_data,parent_id REFERENCES parent(id))
- CREATE TABLE child(id,parent_id,FOREIGN KEY(parent_id) REFERENCES parent(id))
我的问题是:
解决方法
完全一样的东西。您可以使用列定义或在表创建结束时定义外键。结果是一样的。
但正如@Mike T 提到的:
两者之间的区别在于您仅限于单个 使用列定义时的列外键,在表中 定义级别,您可以拥有复合外键。
您可以在两种语法中使用 on update/ on delete 。
DB-小提琴:
父表:
CREATE TABLE parent (id int,some_text varchar(50));
智利表:
CREATE TABLE child(id,some_child_data,parent_id REFERENCES parent(id) ON UPDATE CASCADE);
或
CREATE TABLE child(id,parent_id,FOREIGN KEY(parent_id) REFERENCES parent(id))
db