4

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

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

我会这样做:

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

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

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


附加信息

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

4

2 回答 2

4

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

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;

把它放在一个过程中会很方便。

ps关于列位置的注释:来自文档

要在表行中的特定位置添加列,请使用 FIRST 或 AFTER col_name。默认是最后添加列。您还可以在 CHANGE 或 MODIFY 操作中使用 FIRST 和 AFTER 对表中的列重新排序。

于 2013-10-31T09:04:17.943 回答
-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
于 2013-10-31T10:36:48.847 回答