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


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

首先,我们得认识到在我们没有命名约束的时候,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  表名

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值