大家好我想知道,当我们为任何表创建一个forigen键时,为什么我们使用像...这样的约束。
CREATE TABLE Persons
(
PersonID int identity(1,1) NOT NULL,
FirstName nvarchar(20),
LastName nvarchar(20) NOT NULL,
CONSTRAINT PrimKeyPeople PRIMARY KEY(PersonID)
);
这里所有准备好的PersonID都是主键,那么为什么需要给另一个名字primkeypeople。 为什么我们在这里使用约束名称PrimKeyPeople这里是什么PrimKeyPeople?
答案 0 :(得分:2)
DBMS中定义的每个约束都有一个名称。在您的示例中,PrimKeyPeople
是将PersonID
定义为主键的约束的名称。
约束名称(与表名,视图名称和数据库中现有的每个其他实体的名称一起)存储在SQL / Schemata(或信息和定义模式)中。 SQL / Schemata使SQL数据库和对象自我描述。例如,SQL / Schemata允许编写删除主键约束的SQL更新。如何删除约束?当然,通过引用它的名字!
请注意,如果您没有为约束指定名称,DBMS将自动生成一个。
答案 1 :(得分:1)
约束可以描述为您必须遵循的规则。
DBMS中已知的几个约束是主键,外键和唯一。主键和唯一确保其中的所有值都是唯一的。因此,永远不会接受任何非独特的价值。
其他约束(如外键)可确保其值引用另一个表中的另一个值。因此,永远不会接受任何不引用其他值的外键值。
在您的情况下,PrimKeyPeople是表人员的主键。此主键(唯一约束)将断言其中的每个值都是唯一的。命名约束是必须的(对于DBMS),但对于用户是可选的。这个'命名'是必需的,因为有时我们需要禁用/启用/删除一些约束。为了使用户友好,一些DBMS为每个约束提供默认名称,以便用户不必明确声明它。