在表插入之前交换表中的列以匹配另一个表的格式

时间:2016-03-25 15:08:37

标签: sql windows-7 visual-foxpro

我想在table_1中的 Visual Fox Pro 9 中交换列,然后将其行插入table_2,以避免数据类型变化导致的数据丢失。我根据 stackoverflow 上的其他解决方案尝试了这两个选项,但我得到两个命令输入的syntax error个消息。 name字段的数据类型为character(5),且必须位于subdir字段之后。

ALTER table "f:\csp" modify COLUMN name character(5) after subdir

ALTER table "f:\csp" change COLUMN name name character(5) after subdir

我在这里根据解决方案尝试了这些命令: How to move columns in a MySQL table?

1 个答案:

答案 0 :(得分:1)

您永远不需要更改列顺序,您永远不应该依赖列顺序来执行某些操作。 要从这个表中插入另一个表,您只需按所需顺序选择列(并且在“insert ... select ...”的情况下,它们的列名称甚至不需要相同)。即:

insert into table_2 (subdir, name) ;
select subdir, name from table_1 

另一种方法是使用xBase命令,如:

select table_2
append from table_1

对于后者,VFP会对列名进行匹配。

总而言之,依靠列排序是危险的。如果你真的想这样做,那么你仍然可以通过多种方式做到这一点。其中之一是将所有数据选择到临时表中,按照您想要的顺序重新创建表并从temp填充(如果存在参照完整性等现有依赖项,则可能不像听起来那么容易 - 您还需要重新创建索引)。

相关问题