Sql Server 2005 约束有四种:CHECK、FOREIGN KEY、UNIQUE 和 PRIMARY KEY 约束
1、在create table的时候建立约束,例如,create table test(userid int primary key not null,username nvarchar(20) unique)
2、在已存在的表中添加约束,又分为两种
a) 通过T-SQL来实现,例如:
ALTER TABLE dbo.<tablename> ADD CONSTRAINT
<namingconventionconstraint> UNIQUE NONCLUSTERED
(
<columnname>
) ON [PRIMARY]
b) 通过DateBase Diagram(Sql Server Management Studio)来完成,四种约束的实现方法各不相同,
unique:在"对象资源管理器"中展开表,右击"索引",选择"新建索引",写上索引的名称,类型为"非聚集",选中"唯一(Q)"的选择框,"确定"即可。
check:在"对象资源管理器"中展开表,右击"约束",选择"新建约束"。
foreign key:在"对象资源管理器"中展开表,右击"键",选择"新建外键",在其中操作即可。
primary key:在"对象资源管理器"中,右击该表,选择"设计",在设计页面,选择要设为主键的字段,右击选择"设置主键"即可。
写最后一个建立主键时才发现,使用DateBase Diagram(Sql Server Management Studio)来修改数据库设计的时候,所有的约束都可以通过"对象资源管理器"中,右击该表,选择"设计",在设计页面,选择要修改的字段右击,在其中添加即可。
最后关于check约束的一点解释,以前并没有用过,此段为"帮助"文档中的摘录:
“通过限制列可接受的值,CHECK 约束可以强制域的完整性。此类约束类似于 FOREIGN KEY 约束,因为可以控制放入列中的值。但是,它们在确定有效值的方式上有所不同:FOREIGN KEY 约束从其他表获得有效值列表,而 CHECK 约束通过不基于其他列中的数据的逻辑表达式确定有效值。例如,可以通过创建 CHECK 约束将 salary 列中值的范围限制为从 $15,000 到 $100,000 之间的数据。这将防止输入的薪金值超出正常的薪金范围。
可以通过任何基于逻辑运算符返回 TRUE 或 FALSE 的逻辑(布尔)表达式创建 CHECK 约束。对于上面的示例,逻辑表达式为:salary >= 15000 AND salary <= 100000。
可以将多个 CHECK 约束应用于单个列。还可以通过在表级创建 CHECK 约束,将一个 CHECK 约束应用于多个列。例如,多列 CHECK 约束可用于确认 country/region 列值为 USA 的任意行是否在 state 列中还有一个两个字符的值。这使得在一个位置可以同时检查多个条件。”
2009-02-02