2009-03-09 7 views
0

Est-il possible de créer plus d'une table à la fois en utilisant une seule instruction create table.Création d'une table dans mysql

+0

pourquoi auriez-vous besoin de faire cela? – sfossen

+0

@Sfossen, Peut-être sur une installation d'application où la performance est la clé? – alex

+0

@alex: comment cela fonctionne-t-il plus vite? – sfossen

Répondre

0

Pas avec MS SQL Server. Je ne suis pas sûr de mysql.

Pouvez-vous donner plus d'informations sur pourquoi vous voudriez faire ceci? Il y a peut-être une approche alternative.

0

Je ne sais pas, mais je ne pense pas que vous puissiez le faire. Pourquoi tu veux faire ça?

0

Pas en SQL standard en utilisant simplement l'instruction 'CREATE TABLE'. Cependant, vous pouvez écrire plusieurs instructions dans une instruction CREATE SCHEMA, et certaines de ces instructions peuvent être des instructions CREATE TABLE. Question suivante - votre SGBD prend-il en charge CREATE SCHEMA? Et a-t-il des effets secondaires indésirables? En se basant sur les pages de manuel de MySQL, il supporte CREATE SCHEMA comme synonyme de CREATE DATABASE. Ce serait un exemple d'un des «effets secondaires fâcheux» dont je parlais.

(Saviez-vous que SQL standard ne fournit pas une déclaration « CREATE DATABASE »?)

0

Je ne pense pas qu'il est possible de créer plus d'une table avec une commande "CREATE TABLE. Tout dépend vraiment de ce que vous voulez faire. Si vous voulez que la création soit atomique, les transactions sont probablement la voie à suivre. Si vous créez toutes vos tables à l'intérieur d'une transaction, elle agira comme une seule instruction create du point de vue de tout ce qui se passe en dehors de la transaction.

5

Pour MySQL, vous pouvez utiliser multi-query pour exécuter plusieurs instructions SQL en un seul appel. Vous devez émettre deux instructions CREATE TABLE séparées par un point-virgule.

Mais chaque instruction CREATE TABLE individuellement ne peut créer qu'une seule table. La syntaxe supportée par MySQL ne permet pas de créer plusieurs tables simultanément. @bsdfish suggère d'utiliser des transactions, mais les instructions DDL comme CREATE TABLE provoquent des validations implicites de transaction. Il n'existe aucun moyen d'exécuter plusieurs instructions CREATE TABLE en une seule transaction dans MySQL.


Je suis également curieux de savoir pourquoi vous auriez besoin de créer deux tables simultanément. La seule idée que je pourrais avoir est de savoir si les deux tables ont des dépendances cycliques, c'est-à-dire qu'elles se réfèrent mutuellement avec des clés étrangères. La solution à cela consiste à créer la première table sans cette clé étrangère, puis créer la deuxième table, puis ajouter la clé étrangère à la première table avec ALTER TABLE ADD CONSTRAINT. La suppression de l'une ou l'autre table nécessite un processus similaire à l'envers.

Questions connexes