sql >> Databáze >  >> RDS >> Mysql

Jak vložit data do více tabulek se závislostmi na cizím klíči (MySQL)

Stručně řečeno, chcete používat transakce (další dokument o tomto) aby vaše vložky byly atomové . Toto je jediný způsob, jak zaručit, že budou vložena všechna (nebo žádná) vaše data. V opačném případě se můžete dostat do situace, kterou popisujete, kdy databáze po některých vloženích přestane být dostupná a jiná se nebudou moci dokončit. Transakce říká databázi, že to, co děláte, je všechno nebo nic, a tak by se měla vrátit zpět, pokud se něco pokazí.

Když používáte syntetické primární klíče, jako vy, PHP a další jazyky poskytují mechanismy pro získání posledního vloženého id. Pokud to chcete dělat výhradně v MySQL, můžete použít LAST_INSERT_ID() funkce. Skončíte s kódem takto:

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. Oracle SQL - REGEXP_LIKE obsahuje jiné znaky než a-z nebo A-Z

  2. jak přidat super oprávnění do databáze mysql?

  3. Vypočítá rozdíl mezi dvěma daty v PHP

  4. Jak nastavit permalink vašeho příspěvku na blogu podle data a názvu příspěvku?