Postgresql

基於視圖獲取底層外鍵約束

  • August 23, 2016

我有以下關係:

CREATE TABLE cities (
   city VARCHAR (80) PRIMARY KEY,
   LOCATION point
);

CREATE TABLE weather (
   city VARCHAR (80) REFERENCES cities (city),
   temp_lo INT,
   temp_hi INT,
   prcp REAL,
   DATE DATE
);

CREATE VIEW test AS SELECT
   *
FROM
   cities;

現在我想在 GUI 中使用測試視圖或任何其他視圖,它只是呈現一個可編輯的表格。這可以通過最近引入的自動更新視圖來實現。我希望表包含包含所有可能值的下拉列表,每次都有一個帶有約束的列,就像在這種情況下帶有外鍵的列一樣。

如何做到這一點?我知道我可以使用列舉並且我今天就這樣做了,但是在 Amazon RDS 上它們很難修改

我有一個想法,即(ab)對每一列使用“EXPLAIN SELECT”查詢並檢查正在查詢哪個表和列。

您可以使用以下語句檢查視圖使用了哪些表:

select vtu.table_schema, 
      vtu.table_name
from information_schema.view_table_usage vtu 
 join pg_class cl on cl.oid = (quote_ident(vtu.table_schema)||'.'||quote_ident(vtu.table_name))::regclass 
where (view_schema, view_name) = ('public', 'test');

如果只返回一個表,您可以在系統中查詢引用該(單個)表的外鍵。

引用自:https://dba.stackexchange.com/questions/147519