我正在与一个客户合作,该客户希望大型数据库中的每个表都具有每个记录的历史记录数据,并且为了美观起见,希望这些列位于每个表的末尾.例如:
表名
>主键
>数据列
>历史列
所以我的问题是,是否有一条SQL命令将列移动到表的末尾?我更喜欢编写一个存储过程,以预定顺序将每个历史列移动到最后一个位置,但是MySQL似乎唯一的命令是FIRST和AFTER,没有LAST选项.
除了查询information_schema表中具有最高序数位置的列并在之后将其移动之外,是否有一种简单的解决方案?
编辑
我当前的解决方案是找到具有以下内容的最底行:
SELECT column_name FROM information_schema.columns
WHERE table_name = tableName AND table_schema = currentSchema
AND ordinal_position IN
(SELECT max(ordinal_position) FROM information_schema.columns
WHERE table_name = tableName AND table_schema = currentSchema
AND column_name <> 'first_history_column'
GROUP BY table_name);
然后相应地订购它们,如下所示:
ALTER TABLE tableName MODIFY 'first_history_column' AFTER column_name;
ALTER TABLE tableName MODIFY 'second