http://www.perlmonks.org?node_id=439306


in reply to (OT) MySQL: delete from multiple tables

The correct delimiter in SQL is single quotes.

DELETE FROM table1 WHERE data_id='111'; DELETE FROM table2 WHERE data_id='111'; DELETE FROM table3 WHERE data_id='111';

mySQL will support deletes from multiple tables, if you're using mySQL 4.0 or later, but I don't suggest it, as it can lock you into using mySQL, and it would mean that should you want to change out your backend, you'll have to go through and remove every mySQL-ism in your code. I find it better to be database-ambiguous unless it's something that you can't do efficiently without it.

Update: I stand corrected -- recent versions of mySQL supports double quotes as a delimiter. I would still advise against it, so you don't have problems should you later move to Oracle, or some other less forgiving database.

Replies are listed 'Best First'.
Re^2: (OT) MySQL: delete from multiple tables
by Jasper (Chaplain) on Mar 14, 2005 at 16:43 UTC
    Have you tried using double quotes in mySQL? I'm pretty sure it works. And I don't think you mean 'delimiter', either. You probably mean something to do with quoting. Whatever, he should be using placeholders.

    (A problem I see is that he has a ';' on the end, and if you pass that in via DBI or whatever, it'll screw things up)

    OK, maybe delimiter might be the right word. I've been wrong before :)