Создание таблицы в MySQL - PullRequest
0 голосов
/ 09 марта 2009

Можно ли создавать более одной таблицы одновременно, используя одну инструкцию создания таблицы.

Ответы [ 5 ]

5 голосов
/ 09 марта 2009

Для MySQL вы можете использовать multi-query для выполнения нескольких операторов SQL за один вызов. Вы должны выполнить два CREATE TABLE оператора, разделенных точкой с запятой.

Но каждый оператор CREATE TABLE в отдельности может создать только одну таблицу. Синтаксис, поддерживаемый MySQL, не позволяет создавать несколько таблиц одновременно.

@ bsdfish предлагает использовать транзакции, но операторы DDL, такие как CREATE TABLE, вызывают неявные фиксации транзакций. В MySQL невозможно выполнить несколько операторов CREATE TABLE за одну транзакцию.


Мне также любопытно, почему вам нужно создавать две таблицы одновременно. Единственная идея, которую я мог бы придумать, - это если две таблицы имеют циклические зависимости, то есть они ссылаются друг на друга с помощью внешних ключей. Решением этой проблемы является создание первой таблицы без этого внешнего ключа, затем создание второй таблицы, а затем добавление внешнего ключа в первую таблицу с помощью ALTER TABLE ADD CONSTRAINT. Для удаления любой таблицы требуется аналогичный процесс в обратном порядке.

0 голосов
/ 09 марта 2009

Не думаю, что с помощью команды CREATE TABLE можно создать более одной таблицы. Все действительно зависит от того, что вы хотите сделать. Если вы хотите, чтобы создание было атомарным, транзакции - это, вероятно, путь. Если вы создадите все свои таблицы внутри транзакции, она будет действовать как единый оператор create с точки зрения всего, что происходит вне транзакции.

0 голосов
/ 09 марта 2009

Я не знаю, но я не думаю, что вы можете сделать это. Почему вы хотите это сделать?

0 голосов
/ 09 марта 2009

Не в стандартном SQL, используя только оператор CREATE TABLE. Однако вы можете написать несколько операторов внутри оператора CREATE SCHEMA, и некоторые из этих операторов могут быть операторами CREATE TABLE. Следующий вопрос - поддерживает ли ваша СУБД CREATE SCHEMA? И есть ли у него какие-либо неблагоприятные побочные эффекты?

Судя по страницам справочника MySQL, он поддерживает CREATE SCHEMA как синоним CREATE DATABASE. Это было бы примером одного из «неблагоприятных побочных эффектов», о которых я говорил.

(Знаете ли вы, что стандартный SQL не предоставляет оператора CREATE DATABASE?)

0 голосов
/ 09 марта 2009

Не с MS SQL Server. Не уверен насчет mysql.

Можете ли вы дать больше информации о том, почему вы хотите это сделать? Возможно, есть альтернативный подход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...