PostgreSQL:表繼承
使用 INHERITS 建立的新表會繼承一個或多個父表,子表只會繼承父表的表結構和 NOT NULL,DEFAULT,CHECK 三種約束,主鍵,外來鍵和唯一鍵以及索引不會被繼承,所以修改父表的結構(增刪欄位),NOT NULL,DEFAULT 和 CHECK 約束會自動同步子表修改。
示例
建立父表,用於測試
create table tbl_inherits_parent( a int not null, b varchar(32) not null default 'Got u', c int check (c > 0), d date not null );
示例一
建立繼承表,檢視索引繼承
test=# alter table tbl_inherits_parent add constraint pk_tbl_inherits_parent_a primary key(a); ALTER TABLE test=# alter table tbl_inherits_parent add constraint uk_tbl_inherits_parent_b_d unique (b,d); ALTER TABLE test=# create table tbl_inherits_partition() inherits (tbl_inherits_parent); CREATE TABLE test=# \d tbl_inherits_partition Table "public.tbl_inherits_partition" Column | Type | Modifiers --------+-----------------------+--------------------------------------------- a | integer | not null b | character varying(32) | not null default 'Got u'::character varying c | integer | d | date | not null Check constraints: "tbl_inherits_parent_c_check" CHECK (c > 0) Inherits: tbl_inherits_parent
示例二
檢視列屬性繼承
test=# alter table tbl_inherits_parent add column e int not null default 0; ALTER TABLE test=# alter table tbl_inherits_parent alter column b set default 'try me'; ALTER TABLE test=# \d tbl_inherits_partition Table "public.tbl_inherits_partition" Column | Type | Modifiers --------+-----------------------+---------------------------------------------- a | integer | not null b | character varying(32) | not null default 'try me'::character varying c | integer | d | date | not null e | integer | not null default 0 Check constraints: "tbl_inherits_parent_c_check" CHECK (c > 0) Inherits: tbl_inherits_parent
示例三
除繼承父表之外,建立子表時可以增加自己的欄位
test=# create table tbl_inherits_partition1(f int) inherits (tbl_inherits_parent); CREATE TABLE test=# \d tbl_inherits_partition1 Table "public.tbl_inherits_partition1" Column | Type | Modifiers --------+-----------------------+---------------------------------------------- a | integer | not null b | character varying(32) | not null default 'try me'::character varying c | integer | d | date | not null e | integer | not null default 0 f | integer | Check constraints: "tbl_inherits_parent_c_check" CHECK (c > 0) Inherits: tbl_inherits_parent
示例四
解除繼承
test=# alter table tbl_inherits_partition1 no inherit tbl_inherits_parent; ALTER TABLE test=# \d tbl_inherits_partition1 Table "public.tbl_inherits_partition1" Column | Type | Modifiers --------+-----------------------+---------------------------------------------- a | integer | not null b | character varying(32) | not null default 'try me'::character varying c | integer | d | date | not null e | integer | not null default 0 f | integer | Check constraints: "tbl_inherits_parent_c_check" CHECK (c > 0)
轉載:https://www.cnblogs.com/alianbog/p/5605129.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31490526/viewspace-2742055/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PostgreSQL 表繼承SQL繼承
- PostgreSQL使用表繼承實現分割槽表SQL繼承
- PostgreSQL分割槽表、繼承表記錄去重方法SQL繼承
- PostgreSQL中的繼承SQL繼承
- PostgreSQL用CTE語法+繼承實現拆分大表SQL繼承
- PostgreSQL學習手冊(表的繼承和分割槽)SQL繼承
- PostgreSQL用CTE語法+繼承實現平滑拆分大表SQL繼承
- PostgreSQL LIST分割槽實現:繼承表+函式+觸發器。SQL繼承函式觸發器
- odoo 繼承(owl繼承、web繼承、view繼承)Odoo繼承WebView
- CSS樣式表繼承CSS繼承
- 原型,繼承——原型繼承原型繼承
- 菱形繼承,虛繼承繼承
- 多繼承 與 多重繼承繼承
- C++繼承詳解:共有(public)繼承,私有(private)繼承,保護(protected)繼承C++繼承
- 三種繼承的方法:public 繼承/private繼承/protected繼承詳解及區別繼承
- Javascript繼承4:潔淨的繼承者—-原型式繼承JavaScript繼承原型
- Javascript繼承2:建立即繼承—-建構函式繼承JavaScript繼承函式
- 繼承繼承
- C++繼承一之公有繼承C++繼承
- JS原型繼承和類式繼承JS原型繼承
- C++中公有繼承、保護繼承、私有繼承的區別C++繼承
- 公有繼承、私有繼承和保護繼承之間的對比繼承
- day23:單繼承&多繼承&菱形繼承&__init__魔術方法繼承
- 類的繼承_子類繼承父類繼承
- JavaScript繼承JavaScript繼承
- JavaScript 繼承JavaScript繼承
- 多繼承繼承
- Java繼承Java繼承
- javascript:繼承JavaScript繼承
- swift繼承Swift繼承
- js繼承JS繼承
- 虛繼承繼承
- 10 #### 繼承繼承
- python 基礎之繼承、重寫、多繼承Python繼承
- 16-繼承繼承
- 粗談繼承繼承
- 原型和繼承原型繼承
- javascript之繼承JavaScript繼承