Es muy simple, LAST_INSERT_ID() devuelve el ID autogenerado (AUTO_INCREMENT) más recientemente de la conexión, o sea que si otro cliente realiza un insert, no lo afectaría.
A simple vista el código que estás mostrando,
si se ejecuta secuencialmente, estaría haciendo lo siguiente
- Insertando un registro en la tabla 'articulos' por lo que LAST_INSERT_ID() tendrá el último ID autogenerado de esta tabla.
- Insertando un registro en la tabla 'precio1', utilizando el ID del último registro insertado del la tabla 'articulos', pero ahora LAST_INSERT_ID() tendrá el último ID autogenerado de esta 'precio1'.
- Insertando un registro en la tabla 'precio2', utilizando el ID del último registro insertado del la tabla 'precio1', pero ahora LAST_INSERT_ID() tendrá el último ID autogenerado de esta 'precio2'.
Calculo que la intención es que ambas tablas 'precio1' y 'precio2' hagan referencia al último ID insertado en la tabla artículos, y para eso tendrás que hacer lo siguiente:
- Insertar un registro en la tabla 'articulos'
- Consultar y mantener en una variable el valor de LAST_INSERT_ID().
- Hacer los inserts en el resto de las tablas.
En MySql sería simplemente:
Código SQL
[-]
INSERT INTO articulos (nombre, marca) VALUES ('NOMBRE', 'MARCA');
SELECT LAST_INSERT_ID() INTO @last_articulo_id;
INSERT INTO precio1 (id_articulo, precio) VALUES ( @last_articulo_id, 1.50);
INSERT INTO precio2 (id_articulo, precio) VALUES ( @last_articulo_id, 1.50);
Saludos!