我似乎无法得到这个权利,我想修改一个字段是一个外键,级联删除......我做错了什么?Postgresql约束
ALTER TABLE my_table
ADD CONSTRAINT $4
FOREIGN KEY my_field
REFERENCES my_foreign_table
ON DELETE CASCADE;
我似乎无法得到这个权利,我想修改一个字段是一个外键,级联删除......我做错了什么?Postgresql约束
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;
外键*是*约束... – 2010-06-09 12:00:43
我仍然不知何故在这里失去了与国外柱(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;
@Magnus Hagander,为什么是“ON DELETE CASCADE”有用吗?我不明白它...... – 2013-04-07 02:22:15
@Stephane查看接受的答案[这个问题](http://stackoverflow.com/questions/14141266/postgresql-foreign-key-on-delete-cascade)“_A外键级联删除意味着如果父表中的记录被删除,那么子表中的相应记录将自动被删除,这被称为级联删除。“看起来像你不想自动包含的东西,除非你想将表格绑定在一起而不是仅仅创建一个引用。 – 2013-06-21 15:22:01
@RichardD,当你没有包含它时,你必须在查询中使用CASCADE关键字,并且你会记住后果:) – Line 2014-12-11 11:55:33