wake-up-neo.com

sql - Einfügen in mehrere Tabellen in einer Abfrage

angenommen, ich habe zwei Tabellen, names und phones, und ich möchte Daten von einigen Eingaben in die Tabellen in einer Abfrage einfügen. Wie kann das geschehen?

Erklären Sie die Syntax, falls dies möglich ist.

31
yossi

MySQL unterstützt das Einfügen mehrerer Tabellen in ein einzelnes INSERT-Anweisung nicht. Oracle ist das einzige, von dem ich merkwürdigerweise weiß, dass es das tut ...

INSERT INTO NAMES VALUES(...)
INSERT INTO PHONES VALUES(...)
19
OMG Ponies

Das kannst du nicht. Sie KÖNNEN jedoch eine Transaktion verwenden und beide innerhalb einer Transaktion enthalten.

START TRANSACTION;
INSERT INTO table1 VALUES ('1','2','3');
INSERT INTO table2 VALUES ('bob','smith');
COMMIT;

http://dev.mysql.com/doc/refman/5.1/en/commit.html

62
Joshua Smith

Ich hatte das gleiche problem Ich löse es mit einer for-Schleife.

Beispiel:

Wenn ich in 2 identisch Tabellen schreiben möchte, benutze ich eine Schleife

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

entweder

ArrTable = ("Table1", "Table2")

for xArrTable = 0 to Ubound(ArrTable)
 Sql = "INSERT INTO " & ArrTable(xArrTable) & " VALUES ('1','2','3')"
NEXT

Wenn Sie eine kleine Abfrage haben, weiß ich nicht, ob dies die beste Lösung ist, aber wenn Ihre Abfrage sehr groß ist und sich in einem dynamischen Skript mit if/else/case-Bedingungen befindet, ist dies eine gute Lösung.

3
Oscar Zarrus

Mehrere SQL-Anweisungen müssen mit der Funktion mysqli_multi_query() ausgeführt werden.

Beispiel (MySQLi-objektorientiert):

    <?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();
?>
0
bdspice