sql >> Database >  >> RDS >> Mysql

Gegevens invoegen in meerdere tabellen met externe-sleutelafhankelijkheden (MySQL)

Kortom, u wilt transacties (meer document hierover) zodat uw invoegingen atomair zijn . Dit is de enige manier om te garanderen dat al uw (of geen) gegevens worden ingevoerd. Anders kunt u in de situatie komen die u beschrijft, waarbij de database niet meer beschikbaar is nadat sommige invoegingen en andere niet kunnen worden voltooid. Een transactie vertelt de database dat wat u doet alles-of-niets is en dat het dus moet worden teruggedraaid als er iets misgaat.

Wanneer u synthetische primaire sleutels gebruikt, zoals u bent, bieden PHP en andere talen mechanismen om de laatst ingevoegde id te krijgen. Als je het volledig in MySQL wilt doen, kun je de LAST_INSERT_ID() functie. Je krijgt een code als deze:

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. Een MySQL-kolom bijwerken op basis van een checkbox-invoer

  2. niet-ondersteund Scannen, stuurprogramma opslaan. Waarde type []uint8 in type *time.Time

  3. Android Room Database, haal specifieke waarde op van het laatst ingevoerde record

  4. Bekijk mijn presentatie 'Optimaliseren van Microsoft Access met SQL Server'