查詢DB2資料庫約束

2021-06-12 21:37:30 字數 2396 閱讀 8136

近期在做乙個功能測試時,需要往db2資料庫中插入一條資料,插入時,一直報「......sqlerrmc=wcsadmin.manifest.f_428,.....」錯誤,通過dbvisualizer personal工具檢視該錶,顯示有乙個 f_428外來鍵約束,但是無奈,就是不知道具體是哪一列(或哪幾列,本人對這個系統整體資料庫結構還不是很熟悉)!!上網搜了一下,得到一遍很實用的文章,得到答案:

通過 「select * from syscat.references where tabname = 『.....』 」 查詢得到這張表的所有外來鍵,這裡就記錄了具體是哪些列進行了外來鍵約束!可以根據這個來調整各列的值。

摘抄過來,備用:

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"

「不能為空值!」 - 非空約束

非空約束(not null constraint)防止向一列新增空值。這就確保了該列在表中每一行都存在乙個有意義的值。例如,sample 資料庫中 employee 表的定義包括 lastname varchar(15) not null ,這就確保每行都將包含乙個雇員的姓。

DB2資料庫新增刪除約束項

在db2資料庫操作的過程中,存在對現有 的操作,但其中有一點需要特別說明的就是,對約束項的操作不是直接對某一列,而是對約束項編號進行操作。db2有五種約束 目錄檢視 檢視列描述 查詢例項 syscat.checks 為每個表檢查約束包含一行記錄 db2 select constname,tabnam...

db2巢狀查詢效率 DB2資料庫SQL優化方法一列

optimize for 子句宣告只想檢索部分結果或者優先檢索前幾行,優化器可以選擇能夠將檢索前幾行所需的響應時間縮至最短的訪問方案。此外,作為單個塊傳送到客戶機的行數由 n 的值限制。因此,optimize for 子句既影響伺服器從資料庫檢索合格行的方式,又影響將那些行返回給客戶機的方式.例如,...

DB2資料庫聯邦 跨庫查詢

在本地資料庫 sample 中直接查詢遠端資料庫remotedb的表 tab test 本地資料庫 sample db2licm l 產品名 db2 express c 許可證型別 無擔保 到期日期 永久 產品標識 db2expc 版本資訊 10.5 最大 cpu 數目 2 最大記憶體量 gb 16...