Avatar billede 1409 Praktikant
31. januar 2007 - 12:24 Der er 7 kommentarer og
1 løsning

Samtidige deletes

Tabellen obc består af obcId, emne og tekst. obcId er primærnøgle.
Tabellen pdf består af pdfId, obcId og pdfNavn. pdfId er primærnøgle.

I tabellen pdf kan obcId optræde flere gange eller overhovedet ikke.

Spørgsmålet er, hvordan jeg samtidigt sletter alle de rækker fra begge tabeller, der måtte indeholde den samme obcId?

Følgende virker ikke:
DELETE FROM obc, pdf WHERE obc.obcId = pdf.obcId OR obc.obcId='$obcId'

Mit næste problem bliver så hvordan jeg sletter flere pdf-filer samtidigt, men det hører til php-katagorien...
Avatar billede limemedia Nybegynder
31. januar 2007 - 13:37 #1
DELETE FROM pdf WHERE obcId='$obcId'; DELETE FROM obc WHERE obcId='$obcId'

Koer den saetning af, der vil vaere under 0.001 sekund mellem dine saetninger bliver eksekveret med mindre dine tabeller er enorme, eller hvis du ikke har indexeret din tabel paa ibcId

og ja, du kan godt leve med det delay
Avatar billede 1409 Praktikant
31. januar 2007 - 16:22 #2
Takker... :-)
Avatar billede 1409 Praktikant
31. januar 2007 - 17:07 #3
Nå, der var jeg for hurtig:

Dette virker ikke:
$query = MYSQL_QUERY("DELETE FROM obc WHERE obcId = '$obcId'; DELETE FROM pdf WHERE obcId = '$obcId' ");

Den er sammensat af dette, der virker:
$query = MYSQL_QUERY("DELETE FROM obc WHERE obcId = '$obcId' ");
$query = MYSQL_QUERY("DELETE FROM pdf WHERE obcId = '$obcId' ");

Det forstår jeg ikke...
Avatar billede arne_v Ekspert
31. januar 2007 - 19:31 #4
understoetter PHP at man eksekverer 2 saetninger i et kald ?

hvis ikke saa lave bare de 2 kald - forskellen vil vaere meget lille
Avatar billede mcgoat Nybegynder
31. januar 2007 - 19:34 #5
$query = MYSQL_QUERY("DELETE FROM obc WHERE obcId = '$obcId'\; DELETE FROM pdf WHERE obcId = '$obcId' ");

Prøv det engang. smed en \ foran ;, hvis PHP nu mente linien blev afsluttet der?
Avatar billede arne_v Ekspert
31. januar 2007 - 19:36 #6
hvis du bruger InnoDB tabeller har du 2 ekstra muligheder:

1) bundt de 2 DELETE i en enkelt transaction

2) definer en foreign key og cascade delete
Avatar billede limemedia Nybegynder
01. februar 2007 - 01:11 #7
phpMyAdmin koerer ofte mange kommandoer i et kald, saa det skulle den da meget gerne understoette. Hvad er fejlen der opstaar ?
Avatar billede 1409 Praktikant
01. februar 2007 - 10:37 #8
Jeg har prøvet at sætte \ foran ;, men forgæves.

Mht.
$query = MYSQL_QUERY("DELETE FROM obc WHERE obcId = '$obcId'; DELETE FROM pdf WHERE obcId = '$obcId' ");
så sker der intet - den sletter ikke noget som helst :-(

Btw. det er MySQL 4.et-eller-andet.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester