在级联上删除Postgresql

时间:2013-05-10 13:40:03

标签: sql postgresql foreign-keys

我有两张桌子。 DeviceDevice_Config。 设备表包含以下列:

device_id
config_id
bla
bla2
foo
bar

Device_config包含以下列

id
foo
bar

正如您所预测的那样,config_id表上的Device是引用idDevice_config列的外键 所以我在Device表上添加了这个约束。

ALTER TABLE device
ADD CONSTRAINT device_config_id_fk FOREIGN KEY (config_id)
REFERENCES device_config (id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE;

但是这样,当删除Device_config中的一行时,Device表上的相应行将被删除。但是我希望相反。删除设备时,我希望删除device_config中的相应条目。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:4)

然后改变逻辑。 设备表格不具有* config_id *且 device_config 将具有* device_id *。 关系是一个设备可能有很多device_configs。

然后

ALTER TABLE device_config
ADD CONSTRAINT device_config_fk FOREIGN KEY (device_id)
REFERENCES config (device_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE CASCADE;