命名约束 vs 系统生成的约束

当你为一个表定义约束时,给约束命名是一个好习惯。另外,SQL Server会为约束创建系统自动生成的名称。当在没有给约束命名的情况下,生成数据定义语言(DDL)(当DDL应用在几个数据库上时),那么系统生产约束名一般是不一样的。

 
在为数据库生成计划后,再生成详细的约束列表,与一个详细计划构造的合法约束列表进行对比,是一个很好的习惯。当数据库相当大时,这样做是非常有益的。

下面的脚本演示了命名约束、不命名约束及系统自动生成的约束名之间的区别,三者使用了同样的表,只不过每次都是重新创建的:

CREATE TABLE Parent
(pkey1 INT NOT NULL
       CONSTRAINT pk_Parent PRIMARY KEY (pkey1))
GO

CREATE TABLE ConstraintName
(Pkey INT NOT NULL
 CONSTRAINT pk_CnstNm primary key,
 Parent_pkey1 INT NOT NULL,
col1  INT NULL
 CONSTRAINT ck_CnstNm_col1 CHECK  (col1 IN ( 'a','b' ) )
 CONSTRAINT df_CnstNm_col1 DEFAULT 1,
CONSTRAINT fk_Parent_CnstNm FOREIGN KEY (Parent_pkey1)
       REFERENCES Parent (pkey1)
)
GO
exec sp_helpconstraint ConstraintName
GO
DROP TABLE ConstraintName
GO
CREATE TABLE ConstraintName
(Pkey INT NOT NULL
       primary key,
 Parent_pkey1 INT NOT NULL
       FOREIGN KEY (Parent_pkey1) REFERENCES PARENT(pkey1),
 col1  INT NULL
       CHECK  (col1 IN ( 'a','b' ) )
       DEFAULT 1
)
GO
exec sp_helpconstraint ConstraintName
GO
DROP TABLE ConstraintName
GO
CREATE TABLE ConstraintName
(Pkey INT NOT NULL
       primary key,
 Parent_pkey1 INT NOT NULL
       FOREIGN KEY (Parent_pkey1) REFERENCES PARENT(pkey1),
 col1  INT NULL
       CHECK  (col1 IN ( 'a','b' ) )
       DEFAULT 1
)
GO
exec sp_helpconstraint ConstraintName
GO
DROP TABLE ConstraintName
GO
DROP TABLE Parent
GO

时间: 2024-08-30 19:49:29

命名约束 vs 系统生成的约束的相关文章

ms sql 外键约束和参绍约束入门教程

外键约束和参绍约束 pubs数据库的CarIfo表创建外键约束,参绍CarFactory表的主键ID. */ USE Pubs GO /*不显示行数*/ SET NOCOUNT ON GO /*创建示例表*/ IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'CarInfo') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) DROP TABLE CarInfo GO CREATE

ORACLE约束总结

你对ORACLE约束的了解如何?比较模糊还 是相当透彻?如果你对下面几个问题了如指掌的话,恭喜你,你已经对约束掌握得比较好了,不用看这篇文章了.ORACLE的约束有啥功能作用? 有哪些类型约束(不同版本ORACLE是否不同)?视图有约束吗?约束是否会影响SQL性能? 约束信息存储在哪些系统视图.数据字典中?约束能否修改名称?能否禁用约束?延迟约束有啥好处.......   约束定义 约束是强加在表上的规则或条件.确保数据库满 足业务规则.保证数据的完整性.当对表进行DML或DDL操作时,如果此操

Oracle 11g系列—6—Oracle中表的约束

完整性约束指的是数据库中数据的正确性和相容性.主要指下面的: primary key 主键 foreign key 外键 unique 唯一 not null 非空 check 检查约束 在Oracle中,使用constraint(英文的意思就是约束)关键字 为约束命名.如果用户没有命名,那么系统会自动会用户创建 的约束命名. OK,那我们接着就详细讲讲这些. 一.Not null 约束 从字面很好理解,就是非空约束,表 示某些列的值不可缺少的,在插入数据的时候,如果没有为它赋值,那么会提示错误

SQL基础--> 约束(CONSTRAINT)

--============================= --SQL基础--> 约束(CONSTRAINT) --=============================   一.几类数据完整性     实体完整性:表中记录不重复(任何两条记录不全等)并且每条记录都有一个非空主键     域完整性:表中字段值必须与字段数据类型.格式.有效范围相吻合     参照完整性:不能引用不存在的值     自定义完整性:根据特定业务领域定义的需求完整性         保证数据完整性的几种常用方法

SQL基础13—— 约束(CONSTRAINT)

原文转自  一沙弥的世界  的博客 一.几类数据完整性     实体完整性:表中记录不重复(任何两条记录不全等)并且每条记录都有一个非空主键     域完整性:表中字段值必须与字段数据类型.格式.有效范围相吻合     参照完整性:不能引用不存在的值     自定义完整性:根据特定业务领域定义的需求完整性         保证数据完整性的几种常用方法        约束(最常用)        过程        函数        触发器               实体完整性:primary

在ISE下分析和约束时序

1.     在ISE下分析和约束时序   3.1   ISE的时序约束工具入门   像TimeQuest一样,ISE软件工具也有自己的时序约束及分析工具.ISE界面的processes当中,有一个user constraints列表,其中的Creat Timing Constrain可以提供用户添加指定的时序约束. ISE使用的时序约束信息跟其他的物理约束,电气约束等信息全部都放置在后缀名为ucf(user constrain file)的文件中,在使用图形化界面编辑约束后,用户还可以直接编辑

从一个简单的约束看规范性的SQL脚本对数据库运维的影响

原文:从一个简单的约束看规范性的SQL脚本对数据库运维的影响   之前提到了约束的一些特点,看起来也没什么大不了的问题,http://www.cnblogs.com/wy123/p/7350265.html以下以实际生产运维中遇到的一个问题来说明规范的重要性. 如下是一个简单的建表脚本,表面上看起来并没有什么问题.其中创建了3个约束,一个主键约束,一个唯一约束,一个默认值约束,该脚本执行起来没有任何问题. USE Test GO if exists(select 1 from sys.table

在PowerDesigner中设计物理模型2——约束

唯一约束 唯一约束与创建唯一索引基本上是一回事,因为在创建唯一约束的时候,系统会创建对应的一个唯一索引,通过唯一索引来实现约束.不过唯一约束更直观的表达了对应列的唯一性,使得对应索引的目的更加清晰,所以一般建议创建唯一约束而不是只创建唯一索引. 在PD中创建唯一约束的操作,以教室表来说,RoomID是主键,必然是唯一的,RoomName如果我们也要去必须是唯一的,那么具体操作如下: 在PD的模型设计面板中,双击"教室"表,打开属性窗口,切换到""Keys"

《简明电路分析》——1.5节电路网络的约束关系

1.5 电路网络的约束关系 电路中除了元件还包括元件之间的连接关系.一旦元件确定以后,元件上的电压.电流将满足元件的伏安特性,称为元件约束.根据不同的元件连接关系,形成不同的电路网络,这些电路网络中的电压.电流根据连接关系的不同,需遵循一定的关系,称为拓扑约束.电路中的拓扑约束包含电流的约束和电压的约束,即著名的基尔霍夫电流定律和基尔霍夫电压定律.1.5.1 电路网络基本术语 在介绍电路中的拓扑约束与基尔霍夫定律之前,先介绍电路中常用的名词和术语. 1) 端点(terminal):元件的边界点,