成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > PostgreSQL 查看表的主外鍵等約束關(guān)系詳解

PostgreSQL 查看表的主外鍵等約束關(guān)系詳解

熱門標(biāo)簽:江蘇400電話辦理官方 天津開發(fā)區(qū)地圖標(biāo)注app 移動外呼系統(tǒng)模擬題 電銷機(jī)器人能補(bǔ)救房產(chǎn)中介嗎 廣州電銷機(jī)器人公司招聘 400電話申請客服 地圖標(biāo)注要花多少錢 電話機(jī)器人怎么換人工座席 濟(jì)南外呼網(wǎng)絡(luò)電話線路

我就廢話不多說了,大家還是直接看代碼吧~

SELECT
   tc.constraint_name, tc.table_name, kcu.column_name, 
   ccu.table_name AS foreign_table_name,
   ccu.column_name AS foreign_column_name,
   tc.is_deferrable,tc.initially_deferred
 FROM 
   information_schema.table_constraints AS tc 
   JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
   JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
 WHERE constraint_type = 'FOREIGN KEY' AND tc.table_name = 'your table name';

constraint_type有四種:

UNIQUE、PRIMARY KEY、CHECK、FOREIGN KEY

通過修改上邊sql語句的table_name和constraint_type來進(jìn)行相應(yīng)的查詢

補(bǔ)充:PostgreSQL查詢約束和創(chuàng)建刪除約束

查詢約束constraint

SELECT
   tc.constraint_name, tc.table_name, kcu.column_name, 
   ccu.table_name AS foreign_table_name,
   ccu.column_name AS foreign_column_name,
   tc.is_deferrable,tc.initially_deferred
 FROM 
   information_schema.table_constraints AS tc 
   JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name
   JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name
 WHERE constraint_type = 'UNIQUE' AND tc.table_name = 'table_name'; 

constraint_type有四種:

UNIQUE、PRIMARY KEY、CHECK、FOREIGN KEY, 通過修改上邊sql語句的table_name和constraint_type來進(jìn)行相應(yīng)的查詢。

添加約束

ALTER TABLE table_name ADD CONSTRAINT uk_users_name1 UNIQUE (NAME);

刪除約束

alter table table_name drop constraint if EXISTS uk_users_name1;

補(bǔ)充:PostgreSQL的依賴約束(系統(tǒng)表pg_depend和pg_constraint)詳解

pg_depend是postgres的一張系統(tǒng)表,用來記錄數(shù)據(jù)庫對象之間的依賴關(guān)系,除了常見的主外鍵,還有其他一些內(nèi)部依賴關(guān)系,可以通過這個系統(tǒng)表呈現(xiàn)出來。

一、表結(jié)構(gòu):

postgres=# \d+ pg_depend
            Table "pg_catalog.pg_depend"
  Column  | Type  | Modifiers | Storage | Stats target | Description
-------------+---------+-----------+---------+--------------+-------------
 classid   | oid   | not null | plain  |       | 系統(tǒng)OID
 objid    | oid   | not null | plain  |       | 對象OID
 objsubid  | integer | not null | plain  |       |
 refclassid | oid   | not null | plain  |       | 引用系統(tǒng)OID
 refobjid  | oid   | not null | plain  |       | 引用對象ID
 refobjsubid | integer | not null | plain  |       |
 deptype   | "char" | not null | plain  |       | pg_depend類型
Indexes:
  "pg_depend_depender_index" btree (classid, objid, objsubid)
  "pg_depend_reference_index" btree (refclassid, refobjid, refobjsubid)
Has OIDs: no

--BTW:OID是Object Identifier的縮寫,是對象ID的意思,因為是無符號的4字節(jié)類型,不夠足夠大,所以一般不用來做主鍵使用,僅系統(tǒng)內(nèi)部,比如系統(tǒng)表等應(yīng)用,可以與一些整型數(shù)字進(jìn)行轉(zhuǎn)換。與之相關(guān)的系統(tǒng)參數(shù)是default_with_oids,默認(rèn)是off

postgres=# \d pg_constraint
   Table "pg_catalog.pg_constraint"
  Column   |   Type   | Modifiers 
---------------+--------------+-----------
 conname    | name     | not null    -- 約束名
 connamespace | oid     | not null    -- 約束所在命名空間的OID
 contype    | "char"    | not null    -- 約束類型
 condeferrable | boolean   | not null    -- 約束是否可以推遲
 condeferred  | boolean   | not null    -- 缺省情況下,約束是否可以推遲
 convalidated | boolean   | not null    -- 約束是否經(jīng)過驗證
 conrelid   | oid     | not null    -- 約束所在的表的OID
 contypid   | oid     | not null    -- 約束所在的域的OID
 conindid   | oid     | not null    -- 如果是唯一、主鍵、外鍵或排除約束,則為支持這個約束的索引;否則為0
 confrelid   | oid     | not null    -- 如果是外鍵,則為參考的表;否則為 0
 confupdtype  | "char"    | not null    -- 外鍵更新操作代碼
 confdeltype  | "char"    | not null    -- 外鍵刪除操作代碼
 confmatchtype | "char"    | not null    -- 外鍵匹配類型
 conislocal  | boolean   | not null    
 coninhcount  | integer   | not null    -- 約束直接繼承祖先的數(shù)量
 connoinherit | boolean   | not null    
 conkey    | smallint[]  |     -- 如果是表約束(包含外鍵,但是不包含約束觸發(fā)器),則是約束字段的列表
 confkey    | smallint[]  |     -- 如果是一個外鍵,是參考的字段的列表
 conpfeqop   | oid[]    |     -- 如果是一個外鍵,是PK = FK比較的相等操作符的列表
 conppeqop   | oid[]    |    -- 如果是一個外鍵,是PK = PK比較的相等操作符的列表
 conffeqop   | oid[]    |     -- 如果是一個外鍵,是FK = FK比較的相等操作符的列表
 conexclop   | oid[]    |     -- 如果是一個排除約束,是每個字段排除操作符的列表
 conbin    | pg_node_tree |     -- 如果是一個檢查約束,那就是其表達(dá)式的內(nèi)部形式
 consrc    | text     |     -- 如果是檢查約束,則是表達(dá)式的人類可讀形式
Indexes:
  "pg_constraint_oid_index" UNIQUE, btree (oid)
  "pg_constraint_conname_nsp_index" btree (conname, connamespace)
  "pg_constraint_conrelid_index" btree (conrelid)
  "pg_constraint_contypid_index" btree (contypid)

pg_depend.deptype字段類型9.1之后多了一個extension的類型,目前類型有

DEPENDENCY_NORMAL (n)   :普通的依賴對象,如表與schema的關(guān)系
DEPENDENCY_AUTO (a)    :自動的依賴對象,如主鍵約束
DEPENDENCY_INTERNAL (i)  :內(nèi)部的依賴對象,通常是對象本身
DEPENDENCY_EXTENSION (e) :9.1新增的的擴(kuò)展依賴
DEPENDENCY_PIN (p)    :系統(tǒng)內(nèi)置的依賴

二、例子

wiki上有一個SQL可以列出系統(tǒng)和用戶對象的各種依賴關(guān)系,低版本的可以看wiki上的另一個寫法

SELECT classid::regclass AS "depender object class",
  CASE classid
    WHEN 'pg_class'::regclass THEN objid::regclass::text
    WHEN 'pg_type'::regclass THEN objid::regtype::text
    WHEN 'pg_proc'::regclass THEN objid::regprocedure::text
    ELSE objid::text
  END AS "depender object identity",
  objsubid,
  refclassid::regclass AS "referenced object class",
  CASE refclassid
    WHEN 'pg_class'::regclass THEN refobjid::regclass::text
    WHEN 'pg_type'::regclass THEN refobjid::regtype::text
    WHEN 'pg_proc'::regclass THEN refobjid::regprocedure::text
    ELSE refobjid::text
  END AS "referenced object identity",
  refobjsubid,
  CASE deptype
    WHEN 'p' THEN 'pinned'
    WHEN 'i' THEN 'internal'
    WHEN 'a' THEN 'automatic'
    WHEN 'n' THEN 'normal'
  END AS "dependency type"
FROM pg_catalog.pg_depend WHERE (objid >= 16384 OR refobjid >= 16384);

BTW:我通常喜歡在where后面加個條件 and deptype >'i' 排除internal依賴

建一張普通的表,執(zhí)行上面的SQL

postgres=# create table tbl_parent(id int);
CREATE TABLE
postgres=# 執(zhí)行上面的SQL;
 depender object class | depender object identity | objsubid | referenced object class | referenced object identity | refobjsubid | dependency type
-----------------------+--------------------------+----------+-------------------------+------------- pg_class       | tbl_parent        |    0 | pg_namespace      | 2200            |      0 | normal
(1 row)

--普通用戶來看只是建了個表,但是沒有約束,其實因為這個表是建立在schema下面,表是依賴于schema上面的

加一個主鍵約束

postgres=# alter table tbl_parent add primary key(id);
ALTER TABLE
 depender object class | depender object identity | objsubid | referenced object class | referenced object identity | refobjsubid | dependency type
-----------------------+--------------------------+----------+-------------------------+------- pg_class       | tbl_parent        |    0 | pg_namespace      | 2200            |      0 | normal
 pg_constraint     | 16469          |    0 | pg_class        | tbl_parent         |      1 | automatic
(2 rows)

--多了一個約束的信息,下面的這條信息表明這個主鍵約束是依賴于表上的,并且是自動模式,詳細(xì)信息可以在系統(tǒng)表pg_constrant里面查詢

三、非正常刪除

正常情況下用戶刪除有依賴關(guān)系的對象時會提示需要先刪除最里層沒依賴的對象,但是如果通過刪除系統(tǒng)表,但又刪得不對,就會導(dǎo)致異常,比如上面這個例子會出現(xiàn) cache lookup failed for constraint

postgres=# select oid,conname,connamespace,contype from pg_constraint where conname like 'tbl_parent%';
 oid |   conname   | connamespace | contype
-------+-----------------+--------------+---------
 16469 | tbl_parent_pkey |     2200 | p
(1 row)
 
postgres=# delete from pg_constraint where conname like 'tbl_parent%';
DELETE 1
postgres=# select oid,conname,connamespace,contype from pg_constraint where conname like 'tbl_parent%';
 oid | conname | connamespace | contype
-----+---------+--------------+---------
(0 rows)
 
postgres=# drop table tbl_parent;
ERROR: cache lookup failed for constraint 16469  --16496是約束的OID
postgres=#

--出現(xiàn)這個問題,是因為手工把約束對象刪除了,但是在pg_depend依賴關(guān)系里面卻仍然存在關(guān)系,所以刪除該表時發(fā)現(xiàn)最里層的依賴對象找不到了就報錯了,

解決:

1.手工恢復(fù)該表的約束對象,比較難也比較煩

2.刪除該表所有的系統(tǒng)依賴信息 上面的問題需要刪除

postgres=# delete from pg_depend where objid = 16469 or refobjid = 16469 ;
DELETE 2
postgres=# drop table tbl_parent;
DROP TABLE

3.要說一點的是不要去手工刪除一些系統(tǒng)表信息來達(dá)到刪除約束的目的,容易因刪不干凈而造成各種異常

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • PostgreSQL中enable、disable和validate外鍵約束的實例
  • postgresql 實現(xiàn)字符串分割字段轉(zhuǎn)列表查詢
  • postgresql 查詢集合結(jié)果用逗號分隔返回字符串處理的操作
  • postgresql數(shù)據(jù)庫連接數(shù)和狀態(tài)查詢操作
  • postgresql查詢自動將大寫的名稱轉(zhuǎn)換為小寫的案例
  • postgresql數(shù)據(jù)庫使用說明_實現(xiàn)時間范圍查詢
  • Postgresql 查詢表引用或被引用的外鍵操作

標(biāo)簽:溫州 寶雞 昭通 榆林 海西 辛集 杭州 濮陽

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PostgreSQL 查看表的主外鍵等約束關(guān)系詳解》,本文關(guān)鍵詞  PostgreSQL,查,看表,的,主外,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PostgreSQL 查看表的主外鍵等約束關(guān)系詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于PostgreSQL 查看表的主外鍵等約束關(guān)系詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    自由日本语亚洲人高潮| 暖暖成人免费视频| 亚洲大肥女ass| 欧美日韩一区二区区| www.涩涩涩| 国产麻豆a毛片| 中文字幕第4页| 18涩涩午夜精品.www| 成人污污www网站免费丝瓜| 2021av网站| 亚洲啪av永久无码精品放毛片| 国产精品久久成人免费观看| 国产一区二区精品久久99| 丰满少妇被猛烈进入高清播放| 日本视频在线| 性欧美视频videos6一9| 欧美日韩国产影片| 影音先锋黄色资源| 亚洲中文无码av在线| 韩国av中国字幕| 91超碰中文字幕久久精品| 91中文在线| 国产av无码专区亚洲精品| 亚洲av永久纯肉无码精品动漫| 国产视频网址在线| 国产在线一区不卡| 99re视频这里只有精品| 熟妇人妻无乱码中文字幕真矢织江| 久久久在线免费观看| 男人的天堂在线免费视频| 色综合久久天天综线观看| 精品国产一区二区三区久久久狼牙| 色天使色偷偷av一区二区| 特黄三级视频| 久久九九免费| 成人资源视频网站免费| www.欧美色| 日韩精品亚洲一区| 久久免费国产精品1| 欧美性在线视频| 国产黄色片在线播放| 久久无码精品丰满人妻| 成人影院av| 亚洲综合在线电影| 在线日韩av永久免费观看| 免费观看成人鲁鲁鲁鲁鲁视频| 蜜桃av中文字幕| 日韩三级一区二区| 综合久久中文字幕| 欧美视频一区在线观看| 日本不卡高清视频| 中文字幕中文字幕一区三区| 国产一区二区丝袜| 国产老女人精品毛片久久| 欧美成人精品欧美一级私黄| 中文字幕无码乱码人妻日韩精品| 亚洲欧美另类综合偷拍| 国产精品视频26uuu| 欧美经典一区二区三区| 91日本韩国| 亚洲国产成人精品一区二区三区| 看女生喷水的网站在线观看| 精品一区二区三区中文字幕| 美女脱光衣服与内衣内裤一区二区三区四区| 日韩一区欧美二区| 麻豆视频在线免费观看| 综合中文字幕| 国产精品激情自拍| 四虎www视频| 亚洲开发第一视频在线播放| 国产精品一区二区a| 色噜噜一区二区| 夜夜狠狠擅视频| 国产精品对白刺激久久久| 久草在线资源网站| 午夜精品一区二区三级视频| 先锋音影av资源中文网| 成人做爰高清视频网站| 日韩日韩日韩日韩日韩| 国产亚洲欧洲一区高清在线观看| 日韩综合在线视频| 日韩激情综合网| 国产精自产拍久久久久久蜜| 韩国三级hd两男一女| 最爽无遮挡行房视频在线| 国产欧美88| 老汉av免费一区二区三区| 99re6热在线精品视频播放| 麻豆av免费看| 中文字幕在线视频网站| 国产精品素人一区二区| 2020国产精品极品色在线观看| 好吊妞国产欧美日韩免费观看网站| 亚洲图片小说区| 精品久久久久久久久久ntr影视| 精品成人一区二区三区| 午夜小视频在线| 日本少妇激情舌吻| 性欧美videossex精品| 久久影院午夜精品| 糖心vlog在线免费观看| 午夜电影网一区| 国产区亚洲区欧美区| 亚洲精品自产拍在线观看app| 欧美日韩综合| 久久久精品毛片| 国语对白做受69按摩| www.99色| 国产精品国产自产拍高清av水多| 91蜜桃免费观看视频| 欧美成人一区二区三区在线观看| 欧美激情精品久久久久久免费印度| 电影天堂久久| 中国一区二区三区| 男人的天堂avav| 激情综合色丁香一区二区| 女人高潮特级毛片| 日韩一级高清毛片| 亚洲色图欧美| 波多野结衣在线观看一区二区| 日本在线视频播放| 欧美巨乳在线观看| jizz国产精品| 久久人体视频| 日韩欧美电影| www.美色吧.com| 女人成午夜大片7777在线| 韩国女同性做爰三级| 精品国产麻豆| 黄色一级视频免费| 黄色片网站免费在线观看| 亚洲直播在线一区| 日韩精品一区二区三区蜜臀| 日本在线视频一区二区三区| 丰满湿润大白屁股bbw按摩| 国产欧美激情| 国产精品h在线观看| xxxxbbbb欧美| 国产成人高潮免费观看精品| 18视频在线观看娇喘| 日日噜噜噜噜久久久精品毛片| 色老太综合网| 国产欧美日韩成人| 激情视频网址| 麻豆国产欧美一区二区三区r| 久久艹精品视频| 亚洲一区二区三区乱码aⅴ| 蜜臀91精品国产高清在线观看| 欧美成人精品福利网站| **网站欧美大片在线观看| 天天操天天射天天爽| 亚洲欧美日韩国产| 日日夜夜综合网| 自拍偷拍你懂的| 黄色的电影在线-骚虎影院-骚虎视频| 97se亚洲国产综合在线| 欧美aⅴ一区二区三区视频| 欧美性天天影视| 欧美成人一区二区三区片免费| 久久久777| 精品成人一区二区三区四区| 精品国产乱码久久久久久108| 亚洲精品乱码久久久久久9色| 国产精品人人妻人人爽| 日本aa大片在线播放免费看| 亚洲国产一区二区久久| dy888午夜| 国产又爽又黄网站亚洲视频123| 欧美激情一二三区| 99视频精品| 国产毛片精品国产一区二区三区| 91麻豆精品国产综合久久久| 人妻熟女aⅴ一区二区三区汇编| 久久精品国产亚洲AV成人婷婷| 高潮白浆视频| 亚洲码欧美码一区二区三区| 久久超碰97中文字幕| 中文字幕在线播放网址| 自拍自偷一区二区三区| 国产精品入口免费软件| 亚洲蜜桃精久久久久久久| 男女啪啪免费观看| 国产ts人妖一区二区| 国产激情视频在线| 久久精品小视频| 精品在线一区二区三区| 亚洲欧美日韩在线一区| 欧美一级爽aaaaa大片| 佐佐木明希av| 国外亚洲成av人片在线观看| 国产福利资源一区| 亚州男人的天堂| 91老司机精品视频| 高清国语自产在线观看| 亚洲精品国产系列| 欧美精品1区| 男人和女人做事情在线视频网站免费观看| 男女毛片免费视频看| 一本一道人人妻人人妻αv| 四虎884aa成人精品| 日日嗨av一区二区三区四区| 亚洲精品一区二区三区影院忠贞| 亚洲五月激情网| av日韩中文字幕| 成人观看免费视频| 欧美日韩亚洲一区二| 国产在线麻豆精品| 免费男女羞羞的视频网站中文子暮| 国产区av在线| 日日夜夜一区二区| 国产日产欧美精品一区二区三区| www.国产视频| 精品一区二区三区影院在线午夜| 伊人网综合视频| www.我爱av| 美女把腿扒开让男人桶免费| 97av影视网在线观看| 欧美xxxx18国产| 亚洲最新免费视频| 麻豆精品视频在线观看| 欧美日韩精品中文字幕一区二区| 五月天黄色网址| 日韩视频免费看| 雨宫琴音一区二区在线| 日本免费一区视频| 中文字幕一区二区人妻电影丶| 亚洲警察之高压线| 国产亚洲一本大道中文在线| 成人久久18免费网站麻豆| 日韩精品一区二区不卡| 涩涩视频在线观看免费| 国精产品一区| 久久艳片www.17c.com| 合欧美一区二区三区| 26uuu成人网| 亚洲 欧美 中文字幕| 精品一区二区三区毛片| a在线观看视频| 精品国产一区二区三区久久| 伊人精品影院| 99精品1区2区| 国产网站在线看| 中文字幕日韩av电影| 国产51自产区| 亚洲国产视频一区二区三区| 一级特黄aaaaaa大片| 国产黄色精品网站| 91精品在线免费观看| 欧美一区二区三区爽爽爽| 公交车上扒开嫩j挺进去| 波多野结衣不卡视频| 亚洲欧美日韩在线观看a三区| 蜜桃av综合| 91精品导航| 98精品在线视频| 日韩视频免费观看高清完整版在线观看| 色播色播色播色播色播在线| 日韩欧美在线字幕| 亚洲人成在线一二| 正在播放国产一区| 亚洲国产精品影院| 成年免费视频黄网站在线观看| 在线成人激情黄色| 在线观看 中文字幕| 冲田杏梨av在线| 成人高h视频在线| 久久久亚洲精华液精华液精华液| 国产精品久久久久久亚洲调教| av中文字幕一区二区| 大伊香蕉精品在线品播放| 亚洲成人99| 菠萝蜜一区二区| 国模吧一区二区| 黑人乱码一区二区三区av| 亚洲激情在线观看视频免费| 成人黄色在线网站| 性欧美videos另类hd| 欧美日韩天堂| 日韩在线欧美| 成人伦理视频网站| 波多野结衣爱爱视频| 国产成人av一区二区| 秋霞成人午夜鲁丝一区二区三区| av每日在线更新| 全彩无遮挡全彩口工漫画h#| 东北一级毛片| 国产偷人妻精品一区| 人妻少妇精品久久| 亚洲黄页网在线观看| 91精彩在线视频| 国产精品毛片aⅴ一区二区三区| 黄色的网站在线观看| 在线观看免费电影| 亚洲人成网站精品片在线观看| 黄色av片三级三级三级免费看| 久久国产中文字幕| 一区二区免费在线观看视频| 黄色网络在线观看| 久久亚洲国产精品日日av夜夜| 免费看污污网站| 国产欧美日本在线| 欧美日韩一区在线观看视频| 午夜不卡在线视频| 日韩成人黄色片| 四虎精品一区二区三区| 欧美日韩一二三| 亚洲国产精品毛片av不卡在线| 最近中文字幕大全中文字幕免费| 日韩视频在线一区二区| gogogogo高清视频在线| 色婷婷粉嫩av| 久久精品欧美一区二区| 毛片免费在线| 韩国女主播一区二区| 97久久精品人搡人人玩| 成人区精品一区二区婷婷| 欧美日韩国产一中文字不卡| 永久免费不卡在线观看黄网站| 毛片中文在线观看| 成人性生交免费看| 日韩国产成人无码av毛片| 精品人妻无码一区二区三区| 黄色的视频在线观看免费| 男人资源在线播放| 欧美日韩xxxx| 91精品人妻一区二区三区四区| 日韩免费av网站| 亚洲男人网站|