您的位置:首页 > 数据库

关于SQL Server 2000如何找到并删除没有起名的约束

2014-08-01 14:09 260 查看
很多时候,我们在创建表时就在定义单个属性后面直接加上约束声明,这样就导致了一个问题,那就是建立表以后,一但发现这个约束的条件改变了并需要我们再次去修改的时候,我们会发现因为找不到这个约束的名字而无从下手。我们总不可能删除表后再次新建一个吧。所以便有了以下的解决办法。。

首先,我们得认识到在我们没有命名约束的时候,DBMS已经为我们提供了一个默认的名字分配。

方法一:SQLserver2000没有像2005版本那样界面华丽,可以把所有约束都一目了然,但是我们依然可以在左侧的对象浏览器(F8)→当前操作的数据库→用户表→当前表→约束 里面找到这张表的所有约束

方法二:DBMS已经为我们提供一种查找此约束的方式,通过列出所有约束的列表,可以发现DBMS对未命名的约束给出了DBMS的内部名称。例如sysobjects 表,在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在sysobjects表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。

select name from sysobjects 可以查看所有对象内容

select name from sysobjects where xtype='d'
查看默认d约束

SQL Server xtype的简单介绍

sysobjects 表

name sysname 对象名。

Id int 对象标识号。

xtype char(2) 对象类型。可以是下列对象类型中的一种:

C = CHECK 约束

D = 默认值或 DEFAULT 约束

F = FOREIGN KEY 约束

L = 日志

FN = 标量函数

IF = 内嵌表函数

P = 存储过程

PK = PRIMARY KEY 约束(类型是 K)

RF = 复制筛选存储过程

S = 系统表

TF = 表函数

TR = 触发器

U = 用户表

UQ = UNIQUE 约束(类型是 K)

V = 视图

X = 扩展存储过程

方法三:调用存储过程 sp_helpconstraint 表名

方法四: 直接对表作出违反这个约束的操作,它会提示和本约束冲突,这时你会知道约束名字啦

综上,记住,最好为你的每个约束都起个名字,即使你认为不会引用到它也要如此。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐