Database、Table的所有约束

列出Database或Table的所有约束

很多时候我们想使用像 INSERT、UPDATE、DELETE 这样的DML命令。有时候因为某个表被设置约束,导致我们操作该表出现错。拿到一个新的数据库,如果不知道哪些表被设置约束,一定让人很痛苦。

如果我们能够列出所有的约束,很多错误就可以避免。下面有两个方法列出约束。

方法 一

使用 sys.objects 获得约束信息。

— 显示数据库中所有约束

SELECT * FROM sys.objects

WHERE type_desc LIKE ‘%CONSTRAINT’

上面的语句显示sys.objects所有的字段我们可以改进上面的查询,显示比较舒服的结果

– 显示数据库中所有约束

SELECT OBJECT_NAME(object_id) AS ConstraintName,

SCHEMA_NAME(schema_id) AS SchemaName,

OBJECT_NAME(parent_object_id) AS TableName,

type_desc AS ConstraintType

FROMsys.objects

WHERE type_desc LIKE %CONSTRAINT’

– 显示‘Employee’表中所有约束

SELECT OBJECT_NAME(object_id) AS ConstraintName,

SCHEMA_NAME(schema_id) AS SchemaName,

type_desc AS ConstraintType

FROM sys.objects

WHERE type_desc LIKE ‘%CONSTRAINT’ AND OBJECT_NAME(parent_object_id)=‘Employee’

方法 二

使用 INFORMATION_SCHEMA.TABLE_CONSTRAINTS 获得约束信息。 这个查询有一个缺点,它不会显示数据库默认(DEFAULT)约束

–显示数据库中所有约束

SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS

– 显示‘Employee’表中所有约束

SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS

WHERE TABLE_NAME=‘Employee’

在数据库中我们可以使用下面的SQL语句显示默认(DEFAULT)约束

– 显示数据库中所有约束

SELECT OBJECT_NAME(PARENT_OBJECT_ID) AS TABLE_NAME,

COL_NAME (PARENT_OBJECT_ID, PARENT_COLUMN_ID) AS COLUMN_NAME,

NAME AS DEFAULT_CONSTRAINT_NAME

FROM SYS.DEFAULT_CONSTRAINTS

posted @ 2012-11-20 15:44  CodingStar  阅读(1534)  评论(1编辑  收藏  举报