Asked:2020-09-19 19:28:01 +0000 UTC2020-09-19 19:28:01 +0000 UTC2020-09-19 19:28:01 +0000 UTC
在 oracle 中添加列
772
有一个任务是在某个列之后向 oracle 表添加一列。像这样尝试过:ALTER TABLE <имя таблицы> ADD <имя столца> VARCHAR(255) AFTER <имя столбца после которого необходимо добавить>; 但是这种方法行不通
在 Oracle 12c 中:这是一个示例
表中列的顺序通常不应该起任何作用。也就是说,如果有这样的任务,那么之前在设计数据库或使用它的应用程序时就会出错。
如果列的顺序很重要并且需要,那么该运算符
AFTER
很可能已在 SQL 标准中实现。但是,如果在极少数情况下需要列的顺序,例如,对于代码生成器,那么最简单的方法是使用视图而不是物理表。
更改视图中列的顺序不会影响物理表的结构(索引、约束、触发器等),也就是说,实际上会“无痛”:
只有在万不得已的情况下,您才能使用多种解决方案,例如,在 enSO 上的这个线程中。在我看来,最正确的方法是那里缺少 - 卸载数据,从头开始重新创建表,填写保存的数据。
在 12c 中,可以通过更改现有列的可见性来重新排序列。但引入不可见列的主要目的是更容易迁移旧的、依赖于列顺序的应用程序。因此,这种在中间添加一列的方式不能被称为“辱骂”——“他们试图摆脱的东西,他们来了。” 在 Tom Kite 的博客上阅读更多内容。
select * from ...
,但这是“非官方的”。INSERT
顺序SELECT
。DBMSMERGE
保证遵守此顺序。升级版。不,我按列的顺序匆匆一点,上面的答案被剪掉了一部分。在关系理论中,顺序是不需要的,但 Oracle 确实支持它: