A supporting view works OK.
-------------------------
CREATE VIEW api2users AS SELECT * from mailusers;
CREATE or replace RULE remove_user AS ON DELETE TO api2users do instead (update mailboxes set username=null where username=old.username and domain=old.domain; delete from mailusers where username=old.username and domain=old.domain);

DELETE FROM api2users where username='postmaster'  and domain='example.com';
DELETE 1
-------------------------

So it probably stays ... although I'm not particularly happy with that; Still, the problem at hand is solved.


W dniu 03.01.2015 o 19:04, Alban Hertroys pisze:
[-------------------]
Well, that’s embarrassing, it’s only a few weeks since I learned this and I’m 
already attributing the theory to the wrong database deity! That’s 
Codd-relationality, of course. Not Boyce.



The theory got me intrigued. google (http://en.wikipedia.org/wiki/Codd%27s_12_rules) says: rule 3: "systematic treatment of null values"; hmmm.... this is a little broader then "support for null". I would think, that: 1. if a sequence of "update XX set fk_field=null; then delete YY depending on that FK", for a particular schema definition works ... 2. so the implementation of FK should support that too ... to be called "systematic", right? 3. and the simplest way to do that for the case at hand, within an "on delete action", is to skip those parts of FK, that are marked as "not null" within the referring table. That would be a "requirement" for rdbms implementation that claims compliance with Codd rule nr.3 :)

I think :)

-R




--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Reply via email to