SQL - inserto en varias tablas en una consulta
-
27-09-2019 - |
Pregunta
suponiendo que tengo dos tablas, names
y phones
y quiero insertar datos de alguna entrada a las tablas, en una query- ¿Cómo puede hacerse esto?
Por favor, si se puede hacer, explicar la sintaxis.
Otros consejos
No se puede. Sin embargo, se puede utilizar un transacción y han ambos estar contenido dentro de una transacción.
START TRANSACTION;
INSERT INTO table1 VALUES ('1','2','3');
INSERT INTO table2 VALUES ('bob','smith');
COMMIT;
Yo tenía el mismo problema. Lo resuelvo con un bucle.
Ejemplo:
Si quiero escribir de 2 idénticos mesas, utilizando un bucle
for x = 0 to 1
if x = 0 then TableToWrite = "Table1"
if x = 1 then TableToWrite = "Table2"
Sql = "INSERT INTO " & TableToWrite & " VALUES ('1','2','3')"
NEXT
cualquiera
ArrTable = ("Table1", "Table2")
for xArrTable = 0 to Ubound(ArrTable)
Sql = "INSERT INTO " & ArrTable(xArrTable) & " VALUES ('1','2','3')"
NEXT
Si usted tiene una pequeña consulta no sé si esta es la mejor solución, pero si la consulta es muy grande y es dentro de un script dinámico con IF / condiciones de casos / else esta es una buena solución.
Varias sentencias SQL se debe ejecutar con el , función mysqli_multi_query()
.
Ejemplo (MySQLi orientada a objetos):
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO names (firstname, lastname)
VALUES ('inpute value here', 'inpute value here');";
$sql .= "INSERT INTO phones (landphone, mobile)
VALUES ('inpute value here', 'inpute value here');";
if ($conn->multi_query($sql) === TRUE) {
echo "New records created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>