Postgresql
基於視圖獲取底層外鍵約束
我有以下關係:
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');
如果只返回一個表,您可以在系統中查詢引用該(單個)表的外鍵。