db2 鍵約束操作
今天遇到乙個問題,想要刪掉乙個表中的某列的唯一約束,google了一下,搜出來許許多多,找到能用的,記下來總結如下。
命令如下
select constname, tabname, colname, colseq from syscat.keycoluse where tabname='tablename'
alter table db2admin.bm_servers drop unique ;
第一行查詢出列對應的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
syscat.references
為每個參照約束包含一行記錄
db2 select constname, tabname, refkeyname, reftabname, colcount, deleterule, updaterule from syscat.references
syscat.tabconst
為每個惟一(u)、主鍵(p)、外來鍵(f)或表檢查(k)約束包含一行記錄
db2 select constname, tabname, type from syscat.tabconst
syscat.tables
parents
該錶的父表數目(該錶在其中充當子表的參照約束數目)
db2 "select tabname, parents from syscat.tables where parents > 0"
syscat.tables
children
該錶的子表數目(該錶在其中充當父表的參照約束數目)
db2 "select tabname, children from syscat.tables where children > 0"
syscat.tables
selfrefs
該錶的自引用參照約束數目(該錶在其中既充當父表又充當子表的參照約束數目)
db2 "select tabname, selfrefs from syscat.tables where selfrefs > 0"
syscat.tables
keyunique
在該錶上所定義的惟一約束(除了主鍵)的數目
db2 "select tabname, keyunique from syscat.tables where keyunique > 0"
syscat.tables
checkcount
在該錶上所定義的檢查約束的數目
db2 "select tabname, checkcount from syscat.tables where checkcount > 0"
更多請檢視
db2 官方文件:
知其然,知其所以然,那麼下面就要討論下這些都是神馬啊?當然也是從以上文件中總結出來滴
db2有五種約束:
建立 not null:
create table employees (. . .
emergency_phone char(14) not null,
. . .
);修改之:
db2 "alter table tabname alter colname drop not null"
db2 "alter table t01 alter colname set not null"
建立、刪除唯一約束:
db2 "alter table tabname add unique(colname)"
db2 "alter table tabname drop unique constname "
建立主鍵約束:
db2 "alter table staff add primary key (id)"
建立外來鍵約束:
db2 alter table project add foreign key (respemp) references employee on delete cascade
表檢查約束:
db2 alter table employee add constraint phoneno_length check (length(rtrim(phoneno)) = 4)
db2 基礎操作
清空cls 檢視資料版本 select from sysibm.sysversions 重啟資料 restart db twcs177 啟用資料庫 activate db twcs177 停止資料庫 deactivate db twcs177 資料庫鏈結名 db2 catalog tcpip mod...
查詢DB2資料庫約束
近期在做乙個功能測試時,需要往db2資料庫中插入一條資料,插入時,一直報 sqlerrmc wcsadmin.manifest.f 428,錯誤,通過dbvisualizer personal工具檢視該錶,顯示有乙個 f 428外來鍵約束,但是無奈,就是不知道具體是哪一列 或哪幾列,本人對這個系統整...
db2 表操作語句
1 刪除表中的某一列 alter table t req temporary requirementdrop columntemporary requirement type id 2 在表中增加一列 alter table t req temporary requirement add tempo...