昨天介紹了如何使用繼承,今天要來聊聊繼承後的兩張 table 會有什麼關係和特性,一樣會用昨天的 city
和 capitals
來舉例和說明。
在 capitals
新增一筆資料後可以發現,雖然沒有給 city_id
值,但 PostgreSQL 會延續 city_id
在 city
的 nextval('city_city_id_seq'::regclass)
屬性,在 city_city_id_seq
的起始值加1之後,把值指定給 capitals
的 city_id
。
INSERT INTO public.capitals(
city, country_id, last_update, rating)
VALUES ('London', 102, '2025-01-03 09:45:25', 10);
另外,如果撈取 city
的資料,可以發現 capitals
這個子 table 的資料也一起被撈出來。這個特性其實也可以應用在每月報表的產生,如果每個月產報表都新增一張新的 table ,並且所有月份的報表都繼承自同一張 table ,當需要一起觀察所有月份的報表時,就可以對原始的 table 下 query ,這樣就可以撈取所有月份報表。
如果我們不想看到 capitals
的資料,也可以選擇加上 only
就可以把子 table 的資料過濾掉。