use*_*652 5 sqlite ddl foreign-keys
最近,我开始使用SQLite(根据我的学习要求),遇到了一些SQLite的限制,我想知道:SQLite不能在同一表上创建外键吗?例如,这是我的代码:
CREATE TABLE Categories
(
name varchar(20),
parent_category varchar(20) NULL,
PRIMARY KEY(name),
FOREIGN KEY parent_category_fk(parent_category) REFERENCES Categories(name)
)
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在SQLiteStudio中执行SQL时,外键给我一个错误。
有人知道为什么这行不通吗?
问题是 FK 子句的语法错误。它应该是:
FOREIGN KEY (parent_category) REFERENCES Categories(name)
Run Code Online (Sandbox Code Playgroud)
如果要命名 FK 约束,请使用CONSTRAINT关键字前缀来命名,如下所示:
CONSTRAINT parent_category_fk FOREIGN KEY (parent_category) REFERENCES Categories(name)
Run Code Online (Sandbox Code Playgroud)