gpt4 book ai didi

sql - SQL Server 中的外键 - 使用哪种样式?

转载 作者:行者123 更新时间:2023-12-02 09:10:51 24 4
gpt4 key购买 nike

在我的数据库中,我有以下代码

CREATE TABLE [Users]
(
userID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
Username VARCHAR(255),
Password VARCHAR(255)
);

CREATE TABLE [Image]
(
ImageID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
Imagename VARCHAR,
userID INT,

FOREIGN KEY(userID) REFERENCES Users (userID)
);

但是,在 stackOverflow 和其他多个网站上,人们建议这样写:

CREATE TABLE [Users]
(
userID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
Username VARCHAR(255),
Password VARCHAR(255)
);

CREATE TABLE [Image]
(
ImageID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
Imagename VARCHAR,
userID INT,

CONSTRAINT fk_Users
FOREIGN KEY(userID) REFERENCES Users (userID)
);

我尝试执行这两个语句,它似乎做同样的事情..

我错过了什么,编写CONSTRAINT fk_Users时的技巧是什么?

最佳答案

编写constraint允许您命名约束。

一般来说,当约束被违反时您会注意到这一点。如果您有机会命名约束,错误消息将更有意义。

例如,这个:

The INSERT statement conflicted with the FOREIGN KEY constraint "fk_image_userId". The conflict occurred in database "rextester", table "dbo.Users", column 'userID'.

The statement has been terminated.

比这更清楚:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK__Image__userID__09211CD4". The conflict occurred in database "rextester", table "dbo.Users", column 'userID'.

The statement has been terminated.

此外,当您删除或禁用约束时,alter table 中会使用约束名称,因此拥有合理命名的约束会使操作变得更容易。

关于sql - SQL Server 中的外键 - 使用哪种样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52392584/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com