web-dev-qa-db-ja.com

Postgresqlの制約

私はこれを正しくできないようです、カスケード削除でフィールドを外部キーに変更しようとしています...何が間違っていますか?

ALTER TABLE my_table 
ADD CONSTRAINT $4 
FOREIGN KEY my_field 
REFERENCES my_foreign_table 
ON DELETE CASCADE;
44
Ryan

エラーメッセージを投稿すると役立ちます。しかし、括弧が欠落しているだけだと思います。

ALTER TABLE my_table 
ADD CONSTRAINT my_fk 
FOREIGN KEY (my_field) 
REFERENCES my_foreign_table 
ON DELETE CASCADE;
81
Magnus Hagander

ただ推測:制約の代わりに外部キーを追加してはいけませんか?

ALTER TABLE my_table ADD FOREIGN KEY (my_field) REFERENCES my_foreign_table;

Postgresqlリファレンス

13

私はまだここで外国の列(foreign_field)明示的に指定:

ALTER TABLE my_table
ADD CONSTRAINT my_fk
FOREIGN KEY (my_field)
REFERENCES my_foreign_table (foreign_field)
ON DELETE CASCADE;
12
Tregoreg

これは私にとってはうまくいきます。列をテーブルに追加してから、他のテーブルへの参照を持つ制約を追加します:

-- add column to table 
ALTER TABLE schema.table ADD COLUMN my_column type;  

-- add constraint to column 
ALTER TABLE schema.table ADD CONSTRAINT fk_name FOREIGN KEY (column)
REFERENCES schema.table (column) MATCH SIMPLE 
ON UPDATE NO ACTION ON DELETE NO ACTION;