今天遇到一个问题,想要删掉一个表中的某列的唯一约束,google了一下,搜出来许许多多,找到能用的,记下来总结如下。
命令如下
select constname, tabname, colname, colseq from syscat.keycoluse where TABNAME='TableName'
ALTER TABLE DB2ADMIN.BM_SERVERS DROP UNIQUE <constname>;
第一行查找出列对应的constname,第二行呢就将它从表中删除。
先记录下相关的一些可能用到的命令及表【转载】
目录视图
视图列
描述
查询实例
SYSCAT.CHECKS
为每个表检查约束包含一行记录
db2 select constname, tabname, text from syscat.checks
SYSCAT.COLCHECKS
为表检查约束所引用的每一列包含一行记录
db2 select constname, tabname, colname, usage from syscat.colchecks
SYSCAT.COLUMNS
NULLS
指明一列是可为空(Y)还是不可为空(N)
db2 select tabname, colname, nulls from syscat.columns where tabschema = 'MELNYK' and nulls = 'N'
SYSCAT.CONSTDEP
为某些其他对象上的约束的每个依赖性包含一行记录
db2 select constname, tabname, btype, bname from syscat.constdep
SYSCAT.INDEXES
为每个索引包含一行记录
db2 select tabname, uniquerule, made_unique, system_required from syscat.indexes where tabschema = 'MELNYK'
SYSCAT.KEYCOLUSE
为惟一、主键或外键约束定义的键中所包含的每个列包含一行记录
db2 select constname, tabname, colname, colseq from syscat.keycoluse