Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak wstawić dane do wielu tabel z zaangażowanymi zależnościami klucza obcego (MySQL)

Krótko mówiąc, chcesz użyć transakcji (więcej dokumentów na ten temat) aby Twoje wstawki były atomowe . To jedyny sposób, aby zagwarantować, że wszystkie (lub żadne) Twoje dane zostaną wprowadzone. W przeciwnym razie możesz znaleźć się w sytuacji, którą opisujesz, w której baza danych staje się niedostępna po niektórych wstawieniach, a inne nie są w stanie ukończyć. Transakcja informuje bazę danych, że to, co robisz, to wszystko albo nic, więc powinna się wycofać, jeśli coś pójdzie nie tak.

Kiedy używasz syntetycznych kluczy podstawowych, tak jak Ty, PHP i inne języki zapewniają mechanizmy pobierania ostatniego wstawionego identyfikatora. Jeśli chcesz to zrobić w całości w MySQL, możesz użyć LAST_INSERT_ID() funkcjonować. Otrzymasz taki kod:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL ERROR 1005 (HY000):Nie można utworzyć tabeli 'foo.#sql-12c_4' (errno:150)

  2. Jakiej funkcji użyć do haszowania haseł w MySQL?

  3. DODAJ KOLUMNĘ MySQL

  4. Utwórz tabelę tymczasową w instrukcji SELECT bez oddzielnej tabeli CREATE TABLE

  5. Usuń WSZYSTKIE lub poszczególne niedrukowalne znaki z kolumny w mysql