[GENERAL] deleting the master but not the detail

2008-07-17 Thread Ismael ....

hi
I have one of those master-detail relationships here and I need to be able
to delete the master but leave the details untouched

But the delete command doesn't let me delete the master as long as
there are details referencing it.

ON DELETE RESTRICT | NO ACTION won't let me delete the master
CASCADE | SET NULL | SET DEFAULT will modify the details

Any idea ow to do it without the use of triggers?


SQL Server is got the option ON DELETE DO NOTHING or something
like that, that just oversees the deletion, but I didn't find it for postgres.
_
P.D. Checa las nuevas fotos de mi Space
http://home.services.spaces.live.com/
-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] deleting the master but not the detail

2008-07-17 Thread A. Kretschmer
am  Thu, dem 17.07.2008, um 11:11:00 -0500 mailte Ismael  folgendes:
 
 hi
 I have one of those master-detail relationships here and I need to be able
 to delete the master but leave the details untouched
 
 But the delete command doesn't let me delete the master as long as
 there are details referencing it.
 
 ON DELETE RESTRICT | NO ACTION won't let me delete the master
 CASCADE | SET NULL | SET DEFAULT will modify the details
 
 Any idea ow to do it without the use of triggers?

DROP the constraint. For example:

test=# create table master (id serial primary key, m text);
NOTICE:  CREATE TABLE will create implicit sequence master_id_seq for serial 
column master.id
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index master_pkey 
for table master
CREATE TABLE
test=*# insert into master (m) values ('master1');
INSERT 0 1
test=*# insert into master (m) values ('master2');
INSERT 0 1
test=*# create table slave (id int references master, s text);
CREATE TABLE
test=*# insert into slave values (1, 'slave 1');
INSERT 0 1
test=*# insert into slave values (2, 'slave 2');
INSERT 0 1
test=*# \d slave
Tabelle »public.slave«
 Spalte |   Typ   | Attribute
+-+---
 id | integer |
 s  | text|
Fremdschlüssel-Constraints:
»slave_id_fkey« FOREIGN KEY (id) REFERENCES master(id)

test=*# alter table slave drop constraint slave_id_fkey;
ALTER TABLE
test=*# drop table master;
DROP TABLE
test=*# select * from slave;
 id |s
+-
  1 | slave 1
  2 | slave 2
(2 Zeilen)

test=*#   


Hope that helps, Andreas
-- 
Andreas Kretschmer
Kontakt:  Heynitz: 035242/47150,   D1: 0160/7141639 (mehr: - Header)
GnuPG-ID:   0x3FFF606C, privat 0x7F4584DA   http://wwwkeys.de.pgp.net

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


Re: [GENERAL] deleting the master but not the detail

2008-07-17 Thread Raymond O'Donnell

On 17/07/2008 17:11, Ismael  wrote:


ON DELETE RESTRICT | NO ACTION won't let me delete the master
CASCADE | SET NULL | SET DEFAULT will modify the details


Can you just drop the constraint that's doing the referential integrity?

Ray.

--
Raymond O'Donnell, Director of Music, Galway Cathedral, Ireland
[EMAIL PROTECTED]
Galway Cathedral Recitals: http://www.galwaycathedral.org/recitals
--

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


Re: [GENERAL] deleting the master but not the detail

2008-07-17 Thread Ismael ....

So is there no other way to do it but to verify the integrity using triggers
and drop the referential constraints?

Because I *still* need to verify that NEW records in the details table
direct to something that exists


 
 ON DELETE RESTRICT | NO ACTION won't let me delete the master
 CASCADE | SET NULL | SET DEFAULT will modify the details
 
 Can you just drop the constraint that's doing the referential integrity?
 
 Ray.
 
 Then remove the referential integrity constraint, since it's obviously
 incompatible with your business requirements.
  
 -Doug
_
PlugPlay te trae en exclusiva los mejores conciertos de la red
http://club.prodigymsn.com/ 
-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] deleting the master but not the detail

2008-07-17 Thread Douglas McNaught
On Thu, Jul 17, 2008 at 12:11 PM, Ismael  [EMAIL PROTECTED] wrote:

 hi
 I have one of those master-detail relationships here and I need to be able
 to delete the master but leave the details untouched

Then remove the referential integrity constraint, since it's obviously
incompatible with your business requirements.

-Doug

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


Re: [GENERAL] deleting the master but not the detail

2008-07-17 Thread Scott Marlowe
On Thu, Jul 17, 2008 at 10:52 AM, Douglas McNaught [EMAIL PROTECTED] wrote:
 On Thu, Jul 17, 2008 at 12:11 PM, Ismael  [EMAIL PROTECTED] wrote:

 hi
 I have one of those master-detail relationships here and I need to be able
 to delete the master but leave the details untouched

 Then remove the referential integrity constraint, since it's obviously
 incompatible with your business requirements.

Generally I'd agree, but it might be useful to set the child record
referencing id field to NULL in this circumstance.

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


Re: [GENERAL] deleting the master but not the detail

2008-07-17 Thread Ismael ....

It seems like 3 vs 1 so you win :)
I'll drop the constraint and verify the integrity of the new records manually

tanks


 
 On Thu, Jul 17, 2008 at 10:52 AM, Douglas McNaught  wrote:
 On Thu, Jul 17, 2008 at 12:11 PM, Ismael   wrote:

 hi
 I have one of those master-detail relationships here and I need to be able
 to delete the master but leave the details untouched

 Then remove the referential integrity constraint, since it's obviously
 incompatible with your business requirements.
 
 Generally I'd agree, but it might be useful to set the child record
 referencing id field to NULL in this circumstance.

_
Tenemos lo que búscas…JUEGOS.
http://club.prodigymsn.com/ 
-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general


Re: [GENERAL] deleting the master but not the detail

2008-07-17 Thread Webb Sprague
 hi
 I have one of those master-detail relationships here and I need to be able
 to delete the master but leave the details untouched

when you create the table with an FK constraint, use the ON DELETE SET
NULL option, or SET DEFAULT.  And read the docs on CREATE TABLE:

http://www.postgresql.org/docs/8.3/static/sql-createtable.html


 Then remove the referential integrity constraint, since it's obviously
 incompatible with your business requirements.

Wrong.  See above.  Unless I misunderstand, then I apologize for the noise

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


Re: [GENERAL] deleting the master but not the detail

2008-07-17 Thread Stephan Szabo
On Thu, 17 Jul 2008, Ismael  wrote:

 So is there no other way to do it but to verify the integrity using triggers
 and drop the referential constraints?

Well, you could do something using a before delete trigger on the
referencing table that returns NULL to avoid the delete as well, but
making it only prevent the deletions caused by the referential constraints
might be difficult.

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


Re: [GENERAL] deleting the master but not the detail

2008-07-17 Thread Ismael ....


 
 So is there no other way to do it but to verify the integrity using triggers
 and drop the referential constraints?
 
 Well, you could do something using a before delete trigger on the
 referencing table that returns NULL to avoid the delete as well, but
 making it only prevent the deletions caused by the referential constraints
 might be difficult.
 

That's right, It's easier to verify the existence of the master before inserting
something in the details than controlling the way something gets deleted.
After all, is only a
PERFORM * FROM WHERE NEW.
IF NOT FOUND THEN
RISE EXCEPTION 'that doesn't exists';...
_
PlugPlay te trae en exclusiva los mejores conciertos de la red
http://club.prodigymsn.com/ 
-- 
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general