我試圖使用以下陳述句創建連接表:
CREATE TABLE directors_and_films(
id serial PRIMARY KEY,
directors_id int REFERENCES directors.id
films_id int REFERENCES films.id,
);
這導致 Postgres 回應:
ERROR: schema "films" does not exist
當我將其更改為:
CREATE TABLE directors_films (
id serial PRIMARY KEY,
director_id integer REFERENCES directors (id),
film_id integer REFERENCES films (id)
);
代碼執行得很好。
我的問題是使用()句點訪問列與使用句點有什么區別?這兩者在 SQL 中一般有什么區別?
uj5u.com熱心網友回復:
Postgres 確實支持列參考的功能符號和屬性符號。所以這適用于tbl帶有列的表col:
SELECT col(tbl) FROM tbl;
手冊:
但這種用法已被棄用,因為它很容易混淆
看:
- 將常見查詢存盤為列?
但這與手頭的案件無關。陳述句中 FK 約束的簡短語法CREATE TABLE需要在參考的列周圍加上括號。(在您的示例中,列約束顯然只能參考單個列。)您嘗試過的屬性表示法 ( directors.id) 是此處的語法錯誤。
這就是全部。手冊:
REFERENCES reftable [ ( refcolumn ) ] [ MATCH FULL | MATCH PARTIAL | MATCH SIMPLE ]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/340193.html
標籤:sql PostgreSQL 外键 多对多
