我正在寻找有关外键的信息......再次! ...并且碰巧在 webschools.com 上注意到他们对同一件事有不同的例子。对于外键示例,他们有
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)
现在......
有什么区别?...
我如何知道我的数据库应该使用哪一个?我有一种感觉,这将有助于解决我在 SQL 方面遇到的很多困惑...
最佳答案
效果没有区别:它们实现了完全相同的效果。
我更喜欢内联版本,因为它使 fk 定义尽可能接近列定义。
还有第三种方法 - 单独的 alter table
语句(我认为这是“官方”方法):
alter table orders
add contraint fk_PerOrders
foreign key p_id references persons(p_id);
您可能会发现某些数据库不支持其中一个版本。
关于sql - 这些 SQL 语法有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13696331/