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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏乐沙弥的世界

Oracle 分区索引

    分区索引(或索引分区)主要是针对分区表而言的。随着数据量的不断增长,普通的堆表需要转换到分区表,其索引呢,则对应的转换到分区索引。分区索引的好处是显而易...

31410
来自专栏www.96php.cn

mysql 快速生成百万条测试数据

1、生成思路 利用mysql内存表插入速度快的特点,先利用函数和存储过程在内存表中生成数据,然后再从内存表插入普通表中 2、创建内存表及普通表 CREATE T...

700120
来自专栏性能与架构

Mysql DISTINCT的实现思路

DISTINCT实际上和GROUP BY操作非常相似,只不过是在GROUP BY之后的每组中只取出一条记录而已 所以,DISTINCT的实现方式和GROUP B...

38770
来自专栏乐沙弥的世界

使用DBMS_REDEFINITION在线切换普通表到分区表

      随着数据库数据量的不断增长,有些表需要由普通的堆表转换为分区表的模式。有几种不同的方法来对此进行操作,诸如导出表数据,然后创建分区表再导入数据到分区...

9820
来自专栏ml

行受影响 是什么意思

这就是说明你写的语句没问题,此句实现插入一条name为a kecheng为d fenshu为d  的数据 说明你插入的数据成功... CREATE TABLE ...

33050
来自专栏Netkiller

新闻数据库分表案例

文章节选自《Netkiller Architect 手札》 6.3. 新闻数据库分表案例 这里我通过一个新闻网站为例,解决分表的问题 避免开发中经常拼接表,我采...

42560
来自专栏Netkiller

数据库安全·用户/角色认证

以下节选择《Netkiller Architect 手札》 地址 http://www.netkiller.cn/architect/ 接下来几周的话题是数据库...

36250
来自专栏云霄雨霁

数据定义语言DDL

14500
来自专栏深度学习之tensorflow实战篇

SQl 语句(常见) 新建,删除,修改表,新增字段,修改默认值

SQl 语句(常见) 新建,删除,修改表结构 新建表: create table [表名] ( [自动编号字段] int IDENTITY (1,1) PRIM...

32790
来自专栏数据库新发现

CTAS、Nologging以及数据库运行模式

http://www.itpub.net/showthread.php?threadid=242761

13640

扫码关注云+社区

领取腾讯云代金券