如果不存在则创建表,如果缺少则插入列,最好的方法

时间:2013-10-31 08:59:01

标签: mysql multiple-columns create-table

如果表不存在,我需要创建一个表,如果表已经存在,则以正确的顺序添加缺少的列。

我知道如何通过大量查询和if语句等来做到这一点,但我在这里要问的是最好的解决方案是什么..也许有一个特殊的查询要做到这一点,或者一个聪明的方法

我会这样做:

  • 如果不存在则创建表(所有列应该是这样)

  • 比较所有列(如果缺少某些列,则会添加,否则不会)

这是最好的方式还是有更好的方法呢?


附加信息

需要在正确的位置添加列。我有一个字符串列表,以正确的顺序表示所有列。使用vb.net我正在遍历这些字符串。

2 个答案:

答案 0 :(得分:4)

例如,查看this。它基本上是关于查询数据字典并仅在不存在时添加列:

IF NOT EXISTS(SELECT NULL
                FROM INFORMATION_SCHEMA.COLUMNS
               WHERE table_name = 'tablename'
                 AND table_schema = 'db_name'
                 AND column_name = 'columnname') THEN

  ALTER TABLE `TableName` ADD `ColumnName` int(1) NOT NULL default '0';

END IF;

将它放入程序中会非常方便。

p.s。关于列位置的说明:来自the docs

  

要在表格行中的特定位置添加列,请使用FIRST   或者在col_name之后。默认是最后添加列。你也可以   在CHANGE或MODIFY操作中使用FIRST和AFTER重新排序列   在一张桌子里。

答案 1 :(得分:-1)

您可以使用以下代码:

if not exists(select * from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'table_name' and COLUMN_NAME = 'column_name')

BEGIN
    ALTER TABLE table_name ADD
    ToUser uniqueidentifier NULL

END