怎么样更改表中列的顺序?

[复制链接]
查看11 | 回复9 | 2007-2-1 19:46:22 | 显示全部楼层 |阅读模式
一个表中的列我想改变顺序?
我需要怎么样改?
回复

使用道具 举报

千问 | 2007-2-1 19:46:22 | 显示全部楼层
什么意思?
回复

使用道具 举报

千问 | 2007-2-1 19:46:22 | 显示全部楼层
重新创表吧!
回复

使用道具 举报

千问 | 2007-2-1 19:46:22 | 显示全部楼层
用TOAD中Rebuild Table可以實現。
下面是生成的一段腳本,可以參考它的邏輯。
**********************************************************************
--Note: This rebuild script is not meant to be used when a possibility *
--exists that someone might try to access the table while it is*
--being rebuilt!
*
--
*
--Locks are released when the first DDL, COMMIT or ROLLBACK is *
--performed, so adding a "Lock table" command at the top of this *
--script will not prevent others from accessing the table for*
--the duration of the script.
*
--
*
-- One more important note:
*
--This script will cause the catalog in replicated environments*
--to become out of sync.
*
--**********************************************************************
--Table Rebuild script generated by TOAD
--
--Original table: BCB
--Backup of table: BCB_X
--Date: 2007/1/12 下午 12:33:50
--
SET LINESIZE 200
--
--Make backup copy of original table
ALTER TABLE RMAN.BCB RENAME TO BCB_X ;
-- Drop all user named constraints
ALTER TABLE RMAN.BCB_X DROP CONSTRAINT BCB_F1 ;
ALTER TABLE RMAN.BCB_X DROP CONSTRAINT BCB_U1 ;
--Recreate original table
CREATE TABLE RMAN.BCB
(
BDF_KEY
NUMBER
NOT NULL,
BCB_STAMPNUMBER
NOT NULL,
BCB_RECIDNUMBER
NOT NULL,
PIECE# NUMBER
NOT NULL,
BLOCK# NUMBER
NOT NULL,
BLOCKS NUMBER
NOT NULL,
CORRUPT_SCNNUMBER,
MARKED_CORRUPT VARCHAR2(1 BYTE)
NOT NULL,
CORRUPTION_TYPEVARCHAR2(9 BYTE)
);

--Copy the data from the renamed table
INSERT /*+ APPEND */
INTO RMAN.BCB INS_TBL
(BDF_KEY, BCB_STAMP, BCB_RECID, PIECE#,
BLOCK#, BLOCKS, CORRUPT_SCN, MARKED_CORRUPT,
CORRUPTION_TYPE)
SELECT
BDF_KEY, BCB_STAMP, BCB_RECID, PIECE#,
BLOCK#, BLOCKS, CORRUPT_SCN, MARKED_CORRUPT,
CORRUPTION_TYPE
FROM RMAN.BCB_X SEL_TBL ;
Commit ;
-- Drop all other user named indexes
-- (none)
--Recreate Indexes, Constraints, and Grants
CREATE UNIQUE INDEX RMAN.BCB_U1 ON RMAN.BCB
(BDF_KEY, BCB_RECID, BCB_STAMP)
LOGGING
TABLESPACE CAT
PCTFREE10
INITRANS 2
MAXTRANS 255
STORAGE(

INITIAL
64K

MINEXTENTS 1

MAXEXTENTS 2147483645

PCTINCREASE0

FREELISTS1

FREELIST GROUPS1

BUFFER_POOLDEFAULT
)
NOPARALLEL;

ALTER TABLE RMAN.BCB ADD (
CONSTRAINT BCB_U1
UNIQUE (BDF_KEY,BCB_RECID,BCB_STAMP)
USING INDEX
TABLESPACE CAT
PCTFREE10
INITRANS 2
MAXTRANS 255
STORAGE(

INITIAL
64K

MINEXTENTS 1

MAXEXTENTS 2147483645

PCTINCREASE0

FREELISTS1

FREELIST GROUPS1

));

ALTER TABLE RMAN.BCB ADD (
CONSTRAINT BCB_F1
FOREIGN KEY (BDF_KEY)
REFERENCES RMAN.BDF (BDF_KEY)
ON DELETE CASCADE);

--There are no FKeys that reference the new table to recreate.

--Recompile any dependent objects

ALTER PACKAGE"RMAN"."DBMS_RCVCAT" COMPILE PACKAGE ;
ALTER VIEW "RMAN"."RC_BACKUP_CORRUPTION" COMPILE ;
--There are no triggers to rebuild.
回复

使用道具 举报

千问 | 2007-2-1 19:46:22 | 显示全部楼层
好象这个还只有通过重新表才能解决,不过,字段的顺序有什么大的关系吗?你SELECT时写正确不就行了吗?
重建的话,索引也要重建,权限还要重新赋给用户,也挺烦
回复

使用道具 举报

千问 | 2007-2-1 19:46:22 | 显示全部楼层
好像没这个必要吧!如觉得表不合理,可重新设计!但只为表列顺序就。。。。。
回复

使用道具 举报

千问 | 2007-2-1 19:46:22 | 显示全部楼层
顺序重要么?
如果开发上的顺序,那重新调整啊
数据库中的顺序又没关系
真要调整就重建表好了
回复

使用道具 举报

千问 | 2007-2-1 19:46:22 | 显示全部楼层
最初由 中国歼10 发布
[B]顺序重要么?
如果开发上的顺序,那重新调整啊
数据库中的顺序又没关系
真要调整就重建表好了 [/B]

是呀
回复

使用道具 举报

千问 | 2007-2-1 19:46:22 | 显示全部楼层
用到的时候查询时改变字段不就行了
回复

使用道具 举报

千问 | 2007-2-1 19:46:22 | 显示全部楼层
顺序是给谁看的 少写点SELECT* 不就得了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行