SQL Server 2005------约束

约束是数据库引擎用来约束一个表或一个表关系中的数据,以维持数据库完整性的一个对象。这些约束包括CHECK、UNIQUE、PRIMARY KEY,Null等。

Check约束的局限性:不能引用表中的其他行,不能引用其他表中的列。

可以在Check约束上设置"Check Existing Data On Creation Or Re-Enabling","Enforce For Inserts And Updates","Enforce For Replication"选项。

与约束有关的Sql语句:
   列举中表中不可信的约束
      SELECT  name AS [Constraint Name],
              object_name(parent_obj) as [Table Name]
      FROM sysobjects
      WHERE status & 2048 = 2048
      或者
      SELECT name, is_not_trusted,
       object_name(parent_object_id) AS [Table Name],
      FROM sys.check_constraints
      WHERE parent_object_id = object_id('dbName')
      或者
      SELECT TABLE_NAME, CONSTRAINT_NAME
      FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
      WHERE CONSTRAINT_TYPE IN ( 'FOREIGN KEY', 'CHECK' )
         AND OBJECTPROPERTY(OBJECT_ID(CONSTRAINT_NAME), 'CnstIsNotTrusted') = 1
         ORDER BY
              TABLE_NAME,
              CONSTRAINT_NAME
      Note:OBJECTPROPERTY系统函数用于返回数据库对象的有关属性信息,只能用于架构范围内的数据库对象,不能用于DDL触发器和事件通知对象。
           参考:http://msdn.microsoft.com/en-us/library/ms176105.aspx 
   也可以通过下面的命令查看哪些数据违反了约束
      DBCC CHECKCONSTRAINTS (Table Name)
   
约束与DML触发器各有其优点。约束能够维护数据库表域和关系之间的数据库完整性;而触发器则擅长于比较以往和当前值,并根据这些数据做出决策。一般来说,如有可能,使用约束更为有利;而将棘手的商业和审计逻辑留给触发器来解决。而且,需要注意约束和触发器的执行先后顺序。

你可能感兴趣的:(sql server 2005)