SQL创建和使用约束.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
创建和使用约束 日期:2005-12-4 14:41:58 来源:百当软件园 约束(Constraint )是Microsoft SQL Server 提供的自动保持数据库完整性的一种方法,定义了可输入表 或表的单个列中的数据的限制条件 (有关数据完整性的介绍请参见第 9章)。在SQL Server中有5种约 束:主关键字约束(Primary Key Constraint )、外关键字约束(Foreign Key Constraint )、惟一性约束(Unique Constraint )、检查约束(Check Constraint )和缺省约束(Default Constraint )。 7.2.1主关键字约束 主关键字约束指定表的一列或几列的组合的值在表中具有惟一性,即能惟一地指定一行记录。每个表中只 能有一列被指定为主关键字,且 IMAGE和TEXT类型的列不能被指定为主关键字,也不允许指定主关键 字列有NULL属性。 定义主关键字约束的语法如下: CONSTRAINT constraint name P RIMARY KEY [CLUSTERED | NONCLUSTERED] (column_name1[, column_name2,…,column_name16] ) 各参数说明如下: constraint name 指定约束的名称约束的名称。在数据库中应是惟一的。如果不指定,则系统会自动生成一个约束名。 CLUSTERED | NONCLUSTERED 指定索引类别,CLUSTERED 为缺省值。其具体信息请参见下一章。 column name 指定组成主关键字的列名。主关键字最多由 16个列组成。 例7-3 :创建一个产品信息表,以产品编号和名称为主关键字 create table p roducts ( p_id char(8) not null, p_name char(10) not null , p rice money default 0.01 , quantity smallint null , constraint p k_p_id p rimary key (p_id, p_name) )on [p rimary] 7.2.2外关键字约束 外关键字约束定义了表之间的关系。当一个表中的一个列或多个列的组合和其它表中的主关键字定义相同 时,就可以将这些列或列的组合定义为外关键字,并设定它适合哪个表中哪些列相关联。这样,当在定义 主关键字约束的表中更新列值,时其它表中有与之相关联的外关键字约束的表中的外关键字列也将被相应 地做相同的更新。外关键字约束的作用还体现在,当向含有外关键字的表插入数据时,如果与之相关联的 表的列中无与插入的外关键字列值相同的值时,系统会拒绝插入数据。与主关键字相同,不能使用一个定 义为 TEXT 或 IMAGE 数据类型的列创建外关键字。外关键字最多由 16 个列组成。 定义外关键字约束的语法如下: CONSTRAINT constraint_name FOREIGN KEY (column_name1[, column_name2, …,column_name16]) REFERENCES ref_table [ (ref_column1[,ref_column2, …,ref_column16])] [ ON DELETE { CASCADE | NO ACTION } ] [ ON UPDATE { CASCADE | NO ACTION } ] ] [ NOT FOR REPLICATION ] 各参数说明如下: REFERENCES 指定要建立关联的表的信息。 ref_table 指定要建立关联的表的名称。 ref_column 指定要建立关联的表中的相关列的名称。 ON DELETE {CASCADE | NO ACTION} 指定在删除表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情 况下,如果指定了值 CASCADE ,则在删除父表数据行时会将子表中对应的数据行删除; 如果指定的是 NO ACTION ,则 SQL Server 会产生一个错误,并将父表中的删除操作回滚。 NO ACTION 是缺省值。 ON UPDATE {CASCADE | NO ACTION} 指定在更新表中数据时,对关联表所做的相关操作。在子表中有数据行与父表中的对应数据行相关联的情 况下,如果指定了值 CASCADE ,则在更新父表数据行时会将子表中对应的数据行更新; 如果指定的是 NO ACTION ,则 SQL Server 会产生一个错误,并将父表中的更新操作回滚。 NO ACTION 是缺省值。 NOT FOR REPLICATION 指定列

文档评论(0)

ailuojue + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档