DB2 鍵約束操作

2021-09-07 17:18:09 字數 2977 閱讀 8884

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...