在mysql中创建表

时间:2009-03-09 04:48:47

标签: sql mysql

是否可以使用单个create table语句一次创建多个表。

5 个答案:

答案 0 :(得分:5)

对于MySQL,您可以使用multi-query在一次调用中执行多个SQL语句。您将发出两个以分号分隔的CREATE TABLE语句。

但每个CREATE TABLE语句可以单独创建一个表。 MySQL支持的语法不允许同时创建多个表。

@bsdfish建议使用事务,但像CREATE TABLE这样的DDL语句会导致隐式事务提交。在MySQL中的单个事务中无法执行多个CREATE TABLE语句。


我也很好奇为什么你需要同时创建两个表。我能提出的唯一想法是两个表是否具有循环依赖关系,即它们使用外键相互引用。解决方案是创建没有该外键的第一个表,然后创建第二个表,然后使用ALTER TABLE ADD CONSTRAINT将外键添加到第一个表。删除任一表都需要相反的过程。

答案 1 :(得分:0)

不使用MS SQL Server。不确定mysql。

您能否提供有关您为什么要这样做的更多信息?也许还有另一种方法。

答案 2 :(得分:0)

我不知道,但我认为你不能这样做。你为什么要这样做?

答案 3 :(得分:0)

不使用标准SQL只使用'CREATE TABLE'语句。但是,您可以在CREATE SCHEMA语句中编写多个语句,其中一些语句可以是CREATE TABLE语句。下一个问题 - 您的DBMS是否支持CREATE SCHEMA?它是否有任何不良副作用?

从MySQL手册页面来看,它确实支持CREATE SCHEMA作为CREATE DATABASE的同义词。这将是我所指的“不良副作用”之一的一个例子。

(您是否知道标准SQL不提供'CREATE DATABASE'语句?)

答案 4 :(得分:0)

我认为不可能使用'CREATE TABLE'命令创建多个表。一切都取决于你想做什么。如果您希望创建是原子的,那么事务可能就是这样。如果您在事务中创建所有表,那么从事务外部发生的任何事情来看,它都将充当单个create语句。