2013-05-10 163 views
0

我有兩個表。 DeviceDevice_Config。 器表有以下欄目:Postgresql級聯刪除

device_id 
config_id 
bla 
bla2 
foo 
bar 

而且Device_config以下幾列

id 
foo 
bar 

正如你可以預測,config_idDevice表的外鍵上Device_config 所以引用id列我在我的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中的相應條目。我怎樣才能做到這一點?

+3

那麼幾個不同的設備共享相同的配置?我可能不瞭解你的業務案例,但我會期望外鍵將*從*'device_config' *指向*'device',即'device_config'表中的'device_id',而不是其他方式 – 2013-05-10 13:43:40

+3

請添加* real * DDLS。恕我直言,大多數人閱讀SQL比你的速記僞碼更快。 – wildplasser 2013-05-10 14:57:04

回答

3

然後改變邏輯。 設備表不會有* 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;