我之前做过一些 SQL 但没有加载。如果在创建表时不使用 FOREIGN KEY 使用它,我对 REFERENCES 的作用有点困惑,例如
author_id INTEGER REFERENCES users(id),
相对于...
FOREIGN KEY (author_id) REFERENCES users(id)
如果这些不同,有什么区别?如果它们相同,应该首选哪种形式?
最佳答案
第一个:
author_id INTEGER REFERENCES users,
...是以下的简写:
author_id INTEGER REFERENCES users (id),
...这是以下的简写:
FOREIGN KEY (author_id) REFERENCES users (id)
...这又是 SQL 标准的简写:
CONSTRAINT <constraint-name>
FOREIGN KEY (<column>)
REFERENCES <table>(<columns>)
第一个涵盖了基本的、最常见的情况,并且很简洁。好的。
现在,完整的语法涵盖了具有所有可能变化的一般情况。考虑例如:
book_id int not null,
chapter_id int not null,
constraint fk1 foreign key (book_id, chapter_id)
references chapter (book_id, chapter_id)
由于是复合键,所以不能在列级别指定,而是在表级别指定。
owner_id int not null,
constraint fk2 foreign key (owner_id) references person (id),
constraint fk3 foreign key (owner_id) references company (id)
在这种情况下,同一列指向多个表。想象一下这个结合复合外键的...
通常,您偶尔会看到复合键,并且很少看到外键。大多数情况下,您会看到简单的外键,这就是速记语法如此有用的原因。
关于sql - 使用没有 FOREIGN KEY 的 REFERENCES 是否仍会创建外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61106538/