【发布时间】:2009-11-16 08:32:34
【问题描述】:
当使用“ALTER TABLE tab ADD col”时,新列被添加到表的末尾。例如:
TABLE: TAB
COL_1 COL_2 COL_4
ALTER TABLE TAB ADD COL_3
桌子会变成
TABLE: TAB
COL_1 COL_2 COL_4 COL_3
但是,正如我的示例列的命名所暗示的那样,我实际上希望该表以这样的方式结束:
TABLE: TAB
COL_1 COL_2 COL_3 COL_4
COL_3 在 COL_4 之前。
除了从头开始重建表之外,是否有任何标准 SQL 可以完成这项工作?但是,如果没有标准 SQL,我仍然可以使用一些供应商依赖的 Oracle 解决方案,但最好还是使用标准解决方案。
谢谢。
【问题讨论】:
-
真的很重要吗?列顺序不应该与任何东西相关,除非你使用
select *,在这种情况下,你不应该...... -
@skaffman,我明白你的意思 select * 有点粗糙。但是能够使用它真的很棒,特别是对于针对数据库发送的快速自定义查询。到目前为止,每个人都在使用 select * ,我的选择是修复列顺序或重新教育每个人(他们只是想快速轻松地完成工作)他们需要使用正确的 SQL。 “这些人”是程序员,但不是 DB 程序员,他们发现需要编写大量查询来回答一个简单的问题很麻烦。
-
@Robert Gould - 给人们一个包含他们可以使用的常见查询的文本文件,或者至少给他们“select ... FROM tablename”,然后他们可以输入其余的。
-
@Robert:这里有一个想法,然后:为每个表定义一个视图,该视图具有固定的列顺序,并让您的用户
select *来自该表而不是表。重新创建视图比重新创建表格要容易得多。 -
@skaffman,谢谢 :) 显然这就是我要解决问题的方法,因为我最初想做的事情似乎不可能。