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

mySQL - Indsæt i tre tabeller

Du bør helt sikkert lave de tre indsættelser i en transaktion. Jeg ville nok skrive en lagret procedure til at håndtere indlæggene.

EDIT:

Her er et eksempel på en lagret procedure med en transaktion. Bemærk brugen af ​​LAST_INSERT_ID() for at få ID'et for den tidligere indsatte post. Dette er kun to borde, men du burde kunne udvide det til tre borde.

DELIMITER //
CREATE PROCEDURE new_engineer_with_task(
  first CHAR(35), last CHAR(35), email CHAR(255), tool_id INT)
BEGIN
START TRANSACTION;
   INSERT INTO engineers (firstname, lastname, email) 
     VALUES(first, last, email);

   INSERT INTO tasks (engineer_id, tool_id) 
     VALUES(LAST_INSERT_ID(), tool_id);
COMMIT;
END//
DELIMITER ;

Og du kalder det sådan:

CALL new_engineer_with_task('Jerry', 'Fernholz', '[email protected]', 1);


  1. Android Room - Håndtering af liste over objekter i et objekt og forespørgselsresultat

  2. Hvordan kan jeg importere en database med MySQL fra terminal?

  3. PostgreSQL's date_trunc i mySQL

  4. SQLite - Opret en tabel