Gå til innhold

Syntaks mot innoDB vs. myISAM


Anbefalte innlegg

Hei!

 

Er det noen forskjell på hvordan jeg skriver spørringer mot en innoDB kontra myISAM-base?

Prøver å oppnå ACID og transaksjoner. Hvordan skrive scriptene for transaksjoner..?

 

Nå har jeg helt enkle spørringer som f.eks:

 

$tilkobling = kobleTil("*****************");
$fornavn = mysql_real_escape_string($_POST['fornavn']);
$etternavn = mysql_real_escape_string($_POST['etternavn']);
******
******
******

$sql = "INSERT INTO `Kunder` ( `kundeid` , `fornavn` , `etternavn` , `adresse` , `postnr` , `poststed` , `telefon1` , `telefon2` , `epost` , `serviceavtale` , `notat` ) 
VALUES (
NULL , '{$fornavn}', '{$etternavn}', '{$adresse}', '{$postnr}', '{$poststed}', '{$telefon1}', '{$telefon2}', '{$epost}', '{$serviceavtale}', '{$notat}');";
$resultat = mysql_query($sql, $tilkobling);
//var_dump($sql);
?>
Ny kunde registrert!</td></tr>

Lenke til kommentar
Videoannonse
Annonse

Transaksjoner handler jo om at man "samler opp" sql-statements, for så å kjøre alle på en gang når man til slutt angir COMMIT.

MySQL er i utgangspunktet i autocommit-modus - det vil si at databaseserveren mottar en implisitt COMMIT for hvert SQL-statement du sender inn.

 

For å utnytte transaksjoner fullt ut, har du derfor to alternativer. Det ene er å slå av autocommit, slik at alle statements må følges opp manuelt av COMMIT.

Det andre er å sette opp en eksplisitt transaksjon med BEGIN. Du sender da inn "BEGIN; sql-statement1; sql-statement2; ... ; sql-statementN; COMMIT;". Eventuelt ROLLBACK i stedet for COMMIT - hvilket vil kansellere hele rekka med sql-statements som er angitt siden BEGIN.

 

For øvrig hørte dette kanskje mer hjemme under databaseforumet enn under PHP. :)

Endret av alfred97
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...