我想在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?
答案 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填充(如果存在参照完整性等现有依赖项,则可能不像听起来那么容易 - 您还需要重新创建索引)。