WEB开发网
开发学院数据库MSSQL Server SQL SERVER 2005中的约束 阅读

SQL SERVER 2005中的约束

 2010-10-01 09:00:36 来源:WEB开发网   
核心提示: 我们对Product表中的ProductCode列设置了unique约束,这一列的值不可重复.但允许有空值存在.insertintoproduct(productname,ProductCode)values('aaa',null)OK第一个空值插入成功insertinto

我们对Product表中的ProductCode列设置了unique约束,这一列的值不可重复.但允许有空值存在.

insert into product (productname,ProductCode) values('aaa',null)

OK

第一个空值插入成功

insert into product (productname,ProductCode) values('bbb',null)

ERROR:Violation of UNIQUE KEY constraint 'pc_unique'. Cannot insert duplicate key in object 'dbo.product'. 

第二个空值插入失败

4.        

Primary Key Constraints

主键约束可能是大家最为熟悉的,在数据库的设计中,我们基本上会对每一张表建一个主键约束,用以把数据库的每条记录(行)区分开来.主键可以针对表中的一列或多列。但与约束不同的是,它的值不能为空。

下面的例子是对其中一列设置主键:

Create Table Users(
 UserID int primary key,
 UserName varchar(50) not null
)

下面是对多列设置主键:

CREATE TABLE KeyData
(
    FiscalYear int not null,
    Period int not null,
    DataType int not null,
    KeyValue int not null
    CONSTRAINT [PK_constraint_keydata] PRIMARY KEY CLUSTERED 
    (
        FiscalYear,
        Period
    )
)

5.        

Foreign Key Constraints

前面提到约束分语义上限制和属性关系的限制,外键约束就是用来限制属性间关系的。通俗一点讲,就是一张表中的某列引用了另一张表的主键,因为该列的值必须出自主键列的值。

Create table Manager
(
    ManagerID int primary key,
    ManagerName varchar(50),
)

上面我们建立了一个Manager的表,有一个ID列是该表的主键,唯一代表了每一个经理。

下面建立了销售区域的表,并指定每个区域有一个经理负责:

Create Table SalesRegion
(
    SalesRegionID int Primary Key,
    SalesRegionName varchar(100),
    ManagerID int foreign key REFERENCES Manager(ManagerID)
)

从上面的命令中可以看出,ManagerID就是外键,它的作用是连接了SalesRegion与Manager两张表,限制ManagerID在表SalesRegion中的使用,我们不能把某个区域指定给一个不存在经理负责。如果我们试图往SalesRegion插入一条记录,而该记录的ManagerID是Manager表中不存在的ManagerID,系统就会报出以下的错误:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK__SalesRegi__Manag__3F6663D5". The conflict occurred in database "AdventureWorks", table "dbo.Manager", column 'ManagerID'.

上一页  1 2 3 

Tags:SQL SERVER 约束

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接