私はこれを正しくできないようです、カスケード削除でフィールドを外部キーに変更しようとしています...何が間違っていますか?
ALTER TABLE my_table
ADD CONSTRAINT $4
FOREIGN KEY my_field
REFERENCES my_foreign_table
ON DELETE CASCADE;
エラーメッセージを投稿すると役立ちます。しかし、括弧が欠落しているだけだと思います。
ALTER TABLE my_table
ADD CONSTRAINT my_fk
FOREIGN KEY (my_field)
REFERENCES my_foreign_table
ON DELETE CASCADE;
ただ推測:制約の代わりに外部キーを追加してはいけませんか?
ALTER TABLE my_table ADD FOREIGN KEY (my_field) REFERENCES my_foreign_table;
私はまだここで外国の列(foreign_field
)明示的に指定:
ALTER TABLE my_table
ADD CONSTRAINT my_fk
FOREIGN KEY (my_field)
REFERENCES my_foreign_table (foreign_field)
ON DELETE CASCADE;
これは私にとってはうまくいきます。列をテーブルに追加してから、他のテーブルへの参照を持つ制約を追加します:
-- 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;