在db2資料庫操作的過程中,存在對現有**的操作,但其中有一點需要特別說明的就是,對約束項的操作不是直接對某一列,而是對約束項編號進行操作。
db2有五種約束:目錄檢視
檢視列描述
查詢例項
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」
通過上述描述可知,通過syscat.keycoluse
表可以查詢出所需約束項。
select constname, tabname, colname, colseq from syscat.keycoluse where tabname=
'tablename'
其中tabname
為要操作的表名。
查詢結果類似於下圖:
此時根據列名對應上約束項之後,就可以進行刪除操作了:
//刪除唯一約束項
alter
table
drop
unique
;
對五中約束項的操作方式:
//建立 not null:
create
table
(...
char(14
)not
null,.
..);
修改操作:
alter
table
alter
drop
notnull
;alter
table
alter
setnot
null
;建立、刪除唯一約束:
alter
table
addunique
();alter
table
drop
unique
;建立主鍵約束:
alter
table
addprimary
key(
);建立外來鍵約束:
alter
table
addforeign
key(
)references b表
(b表);
表檢查約束:
alter
table employee add
constraint phoneno_length check
(length <=3)
;
以上,就是資料庫約束的所有操作方式。 查詢DB2資料庫約束
近期在做乙個功能測試時,需要往db2資料庫中插入一條資料,插入時,一直報 sqlerrmc wcsadmin.manifest.f 428,錯誤,通過dbvisualizer personal工具檢視該錶,顯示有乙個 f 428外來鍵約束,但是無奈,就是不知道具體是哪一列 或哪幾列,本人對這個系統整...
DB2資料庫新增 更改字段
db2 表基本新增字段操作 1.新增字段 alter table table name add column name column type 2.更改字段型別 alter table table name alter column column name setdata type column t...
DB2 資料庫刪除不了問題分析
資料庫例項在資料中存在於兩個地方 1 物理位置 磁碟上,也就是檔案系統中。2 邏輯位置 資料庫系統表中,也就是對磁碟檔案的配置資訊。刪除資料庫的過程 1 刪除物理檔案,2 刪除邏輯資訊,即物理檔案的配置資訊。以上兩個地方同時刪除,資料庫才真正刪除乾淨。兩種情況刪除不了 1 物理檔案刪除了,但邏輯資訊...