DB2資料庫新增刪除約束項

2021-10-08 05:30:00 字數 3153 閱讀 9942

在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 物理檔案刪除了,但邏輯資訊...