Re: persistent.delete() ?

Michael Nash <[email protected]> Tue, 24 Aug 2004 10:45:59 -0400
Newsgroups gmane.comp.java.keel.user
Organization JGlobal Limited
Message-ID <[email protected]>
Steve:

> I do object to the Database overhead that your suggestion would entail.

If there are many deletes then yes, this would be a lower performance
approach. 

One problem though is the "and" nature of the query: e.g. if you say:

p.setField("oneField", value);
p.setField("oneField", value2);

and then do (for example) a query, you get just oneField=value2, not
value OR value2... 

So it should be possible to steal some code from Query to build the
where clause for a delete, but you still can't do an "or" without
multiple calls.

The Query service, OTOH, can do this right now, as you can supply any
arbitrary SQL, including deletes as complex as you like.

Mike

> Vince, if you send me a patch, I will be happy to apply it (after some 
> general testing, and making sure it does not break any Unit tests, of 
> course).  Or, if you want to open a Feature Request on SourceForge and 
> assign it to me, I will tackle it when I get a few minutes (probably 
> later this week). 
> 
> Regards,
> Steve
> 
> Michael Nash wrote:
> 
> >Vince:
> >
> >delete is key-based, not criteria-based, so the only way (I can think
> >of) to do what you want would be as follows:
> >
> >p.setField("id1", id1);
> >p.retrieve();
> >p.delete()
> >
> >then
> >
> >p.setField("id2", id2)
> >p.retrieve()
> >p.delete
> >
> >Of course you can do this in a loop, if there are lots of ids you want
> >to delete...
> >
> >Mike
> >
> >On Mon, 2004-08-23 at 10:02, Vince Bono wrote:
> >  
> >
> >>I have a question with persists.delete()
> >>I have a table - myTable
> >>id1, id2, field1, field2 ... fieldn
> >>
> >>The  id fields are not unique.
> >>I want to delete all rows where   id1=val1 and id2=val2
> >>if I set
> >>p.setField("id1", id1);
> >>p.setField("id2", id2);
> >>p.delete();       // will generate the command      DELETE FROM myTable;
> >>and delete all records
> >>p.deleteAll();    //  will not generate any  "DELETE" command
> >>
> >>prefixing with p.query()  doesnt appear to work either
> >>any suggestions ?
> >>
> >>Thanks,
> >>    
> >>
> >
> >_______________________________________________
> >User mailing list
> >[email protected]
> >http://lists.keelframework.org/listinfo.cgi/user-keelframework.org
> >
> >  
> >
>