2009-03-09 25 views
0

Ist es möglich, mehrere Tabellen gleichzeitig mit einer einzigen create table -Anweisung zu erstellen.Erstellen einer Tabelle in mysql

+0

warum sollten Sie das tun? – sfossen

+0

@Sfossen, Vielleicht bei einer Anwendungsinstallation, bei der Leistung der Schlüssel ist? – alex

+0

@alex: wie geht das schneller? – sfossen

Antwort

0

Nicht mit MS SQL Server. Ich bin mir nicht sicher über MySQL.

Können Sie mehr Informationen darüber geben, warum Sie dies tun möchten? Vielleicht gibt es einen alternativen Ansatz.

0

Ich weiß es nicht, aber ich glaube nicht, dass Sie das tun können. Warum willst du das machen?

0

Nicht in Standard-SQL mit nur der Anweisung 'CREATE TABLE'. Sie können jedoch mehrere Anweisungen in eine CREATE SCHEMA-Anweisung schreiben, und einige dieser Anweisungen können CREATE TABLE-Anweisungen sein. Nächste Frage - unterstützt Ihr DBMS CREATE SCHEMA? Und hat es irgendwelche unerwünschten Nebenwirkungen?

Ausgehend von den MySQL-Handbuchseiten wird CREATE SCHEMA als Synonym für CREATE DATABASE unterstützt. Das wäre ein Beispiel für eine der "unerwünschten Nebenwirkungen", auf die ich mich bezog.

(Wissen Sie, dass Standard-SQL keine ‚CREATE DATABASE‘ Anweisung bereitstellt?)

0

Ich glaube nicht, es ist möglich, mehr als eine Tabelle mit einem Befehl ‚CREATE TABLE‘ zu erstellen. Alles hängt wirklich davon ab, was du machen willst. Wenn Sie möchten, dass die Kreation atomar ist, sind Transaktionen wahrscheinlich der richtige Weg. Wenn Sie alle Ihre Tabellen innerhalb einer Transaktion erstellen, fungiert sie als eine einzige create-Anweisung aus der Perspektive von allem, was außerhalb der Transaktion passiert.

5

Für MySQL können Sie multi-query verwenden, um mehrere SQL-Anweisungen in einem einzigen Aufruf auszuführen. Sie würden zwei CREATE TABLE Anweisungen ausgeben, die durch ein Semikolon getrennt sind.

Aber jede CREATE TABLE Anweisung kann einzeln nur eine Tabelle erstellen. Die von MySQL unterstützte Syntax erlaubt es nicht, mehrere Tabellen gleichzeitig zu erstellen.

@bsdfish schlägt vor, Transaktionen zu verwenden, aber DDL-Anweisungen wie CREATE TABLE verursachen implizite Transaktion Commits. Es gibt keine Möglichkeit, mehrere CREATE TABLE Anweisungen in einer einzigen Transaktion in MySQL auszuführen.


Ich bin auch neugierig, warum Sie zwei Tabellen gleichzeitig erstellen müssten. Die einzige Idee, die ich finden könnte, ist, ob die zwei Tabellen zyklische Abhängigkeiten haben, d. H. Sie referenzieren sich gegenseitig mit Fremdschlüsseln. Die Lösung besteht darin, die erste Tabelle ohne diesen Fremdschlüssel zu erstellen, dann die zweite Tabelle zu erstellen und dann den Fremdschlüssel der ersten Tabelle mit ALTER TABLE ADD CONSTRAINT hinzuzufügen. Das Löschen beider Tabellen erfordert einen umgekehrten Vorgang.

Verwandte Themen