如果表不存在,我需要创建一个表,如果表已经存在,则以正确的顺序添加缺少的列。
我知道如何通过大量查询和if语句等来做到这一点,但我在这里要问的是最好的解决方案是什么..也许有一个特殊的查询要做到这一点,或者一个聪明的方法
我会这样做:
如果不存在则创建表(所有列应该是这样)
比较所有列(如果缺少某些列,则会添加,否则不会)
这是最好的方式还是有更好的方法呢?
附加信息
需要在正确的位置添加列。我有一个字符串列表,以正确的顺序表示所有列。使用vb.net我正在遍历这些字符串。
答案 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