sql >> Database teknologi >  >> RDS >> Mysql

Sådan indsætter du data i flere tabeller med fremmednøgleafhængigheder involveret (MySQL)

Kort sagt, du vil bruge transaktioner (mere dokument om dette) så dine indlæg er atomare . Dette er den eneste måde at garantere, at alle (eller ingen) af dine data vil blive indsat. Ellers kan du komme i den situation, du beskriver, hvor databasen bliver utilgængelig efter nogle indsættelser og andre ikke er i stand til at gennemføre. En transaktion fortæller databasen, at det, du gør, er alt-eller-intet, og derfor bør den rulle tilbage, hvis noget går galt.

Når du bruger syntetiske primærnøgler, som du er, giver PHP og andre sprog mekanismer til at få det sidst indsatte id. Hvis du vil gøre det helt i MySQL, kan du bruge LAST_INSERT_ID() fungere. Du vil ende med kode som denne:

START TRANSACTION;
INSERT INTO foo (auto,text)
    VALUES(NULL,'text');         # generate ID by inserting NULL
INSERT INTO foo2 (id,text)
    VALUES(LAST_INSERT_ID(),'text');  # use ID in second table
COMMIT;



  1. MYSQL venstre Deltag COUNTS fra flere tabeller

  2. Implementering og administration af MySQL NDB Cluster med ClusterControl

  3. Hvordan henter man mikrosekunder eller millisekunder fra MySQL nuværende tid?

  4. mysql + php hente bladbørn med sti