不会指定一个外键约束让我陷入麻烦?
我在VS2013中有以下T-SQL:
CREATE TABLE [dbo].[Jugo]
(
[JugoID] INT IDENTITY (1, 1) NOT NULL,
[Jugo] NVARCHAR (50) NOT NULL,
[ColorID] INT NOT NULL,
[IngreID] INT NOT NULL,
PRIMARY KEY CLUSTERED ([JugoID] ASC),
FOREIGN KEY (ColorID) REFERENCES Color (ColorID)
ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (IngreID) REFERENCES Ingrediente (IngreID)
ON UPDATE CASCADE ON DELETE CASCADE
);
在更新数据库之前,我收到以下消息:
亮点没有
用户操作创建外键:[dbo]上的未命名约束[Jugo](外键)外键:[dbo]上的未命名约束[Jugo](外键)
支持行动无
我可以继续使用这些未命名的约束吗? 我需要什么约束?
作为参考,这是我想要做的:
3桌:
Jugo
, Color
, Ingrediente
:所以要创建一个jugo(果汁),您需要指定名称,颜色和配料,颜色和配料在自己的桌子上,因此我要定义外键。
谢谢。
只要ColorID
和IngreID
在他们自己的表格中都是主键,您就不会遇到任何问题。
但这里有一个问题,你没有限制你的主键。 对于您正在使用的每个PRIMARY KEY,使用约束是一种很好的做法,这样,当您将外键指定给另一个表时。 它可以读取它来自另一个表。 我不知道VS2013中的SQL但是这里是我的SQL Server示例:
CREATE TABLE JUGO
(
JUGOID numeric identity (1,1) //For auto increment
CONSTRAINT PK_JUGOID PRIMARY KEY (JUGOID),
JUGO nvarchar(50) not null,
.
.
.
)
该PK_JUGOID
在CONSTRAINT PK_JUGOID PRIMARY KEY (JUGOID),
是用户定义的,但它是一个很好的做法,刚才复制的主键的格式,因此使用外键时,你会不会感到困惑。 :)
外键用于数据一致性。 您在列上创建外键,以避免无效条目。
FOREIGN KEY (ColorID) REFERENCES Color (ColorID)
ON UPDATE CASCADE ON DELETE CASCADE,
这个约束确保你的jugo只能有一个颜色表存在的颜色。 此外,你有两个级联命令:
最后你应该给你的约束名称,所以你更容易处理它们。
CONSTRAINT pk_jugo PRIMARY KEY CLUSTERED ([JugoID] ASC),
CONSTRAINT fk_jugo_color FOREIGN KEY (ColorID) REFERENCES Color (ColorID),
CONSTRAINT fk_jugo_ingre FOREIGN KEY (IngreID) REFERENCES Ingrediente (IngreID)
链接地址: http://www.djcxy.com/p/65891.html
上一篇: Will not specifying a foreign key constraint get me in trouble?