关于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 表名
方法四: 直接对表作出违反这个约束的操作,它会提示和本约束冲突,这时你会知道约束名字啦
综上,记住,最好为你的每个约束都起个名字,即使你认为不会引用到它也要如此。
首先,我们得认识到在我们没有命名约束的时候,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 表名
方法四: 直接对表作出违反这个约束的操作,它会提示和本约束冲突,这时你会知道约束名字啦
综上,记住,最好为你的每个约束都起个名字,即使你认为不会引用到它也要如此。
相关文章推荐
- 关于如何将DB2中的非空约束删除
- 数据库没有对约束设置名称如何删除约束(oracle)
- 数据库视图+如何删除没有主键约束名的约束。
- 关于“没有找到GLUT32.DLL…”错误
- 关于如何获得使用[迅播播放器]播放过的电影的问题,及如何删除播放过的文件的解答(一).
- 关于 ext3 下如何恢复误删除文件的实验
- 关于如何删除掉select中的option元素,兼容IE、Firefox
- 导入的数据,删除约束后没有自动删除对应索引,重建约束出错
- 调试时出现:“没有找到 MSVCR80D.dll,因此这个程序未能启动,重新安装应用程序,可能会修复此问题”错误提示,如何解决?
- 如何解决没有找到borlndmm.dll或cc3260mt.dll的错误
- 无处不在的二八原理[3]:关于招聘(如何找到优秀程序员)
- 《编程之美》3.4:没有头结点的单链表如何删除结点
- 今天看了一篇oracle tip,关于如何获得行锁时跳过已被锁的行,oracle8i的sql reference居然没有关于这个选项的介绍,特此记录下来。
- 关于如何删除掉select中的option元素,兼容IE、fireFox
- oracle中关于表的所有操作(创建删除表,修改表结构,创建约束,操作表数据,增删改查等)
- 如何删除通过主键和唯一约束创建的索引
- [求助]如果一个网页没有表单,如何找到并填充其中的文本域呢?
- SQL SERVER2005关于如何找到表的说明。
- EXCEL中如何根据某列找到重复的行,并将重复只保留一条其余的删除?
- 学习Java的第一步是安装好JDK,写一个Hello World, 其实JDK的学习没有那么简单,关于JDK有两个问题是很容易一直困扰Java程序员的地方:一个是CLASSPATH的问题,其实从原理上来说,是要搞清楚JRE的ClassLoader是如何加