SQL2005新增字段在表中的排序比如我想把新增字段排在某字段之后,而并不是最后由于表中数据较大,用连接器(客户端工具)直接增加,保存时会提示超时,所以用sql语句alter table table_name add col_name varchar(aaa)来增加字段,但默认的是新增的字段在表中排到了最后所要要如何操作才能不让新增的字段排到最后
解决方案 »
- sql server 2008 r2的oracle数据库驱动问题
- 一直没搞明白这个问题
- sql2000派生表
- 请问老师们,如何这样的要求如何查询,在线等答案啊.
- 求一查询语句
- SQL 2005补丁包 SP1 出错 Integration Serivces 服务不能启动。
- 请教一条Update语句的问题
- SQL连接奇怪的问题
- 如何限制两行完全数值相同?UNIQUE好像做不到
- paradox中的memo类型具体是什么情况是可以保存无限量的string????如果是的话怎么样在delphi中使用呢?
- odbc连接sqlserver2000的问题
- 再问动态sql : 昨天htl258给了我一个动态语句的资料,我琢磨了之后收获颇丰,今天提问发现htl258 happyflystone给出了下面解答,可是我看
在SQL SERVER当中很麻烦.你可以测试一下.
新建一张表.然后打开SQL Profiler跟踪.
然后在SSMS上.修改这个表.添加一个列..并移动到指定的字段后面.
看看SQL SERVER为我们做了哪些事情..
是通过改变SYSCOLUMNS中的COLORDER来改变顺序的。 先插入,然后再根据COLORDER值来调整。
可不可以通过修改syscolumns.colid来修改?
--测试
IF OBJECT_ID('TB') IS NOT NULL DROP TABLE TB
GO
CREATE TABLE TB(COL1 INT,COL2 INT,COL3 INT)
INSERT INTO TB SELECT 1,2,3
SELECT * FROM SYSCOLUMNS WHERE ID=OBJECT_ID('TB')
UPDATE SYSCOLUMNS SET COLID=2 WHERE ID=OBJECT_ID('TB') AND [NAME]='COL3'
UPDATE SYSCOLUMNS SET COLID=3 WHERE ID=OBJECT_ID('TB') AND [NAME]='COL2'SELECT * FROM TB
--消息 259,级别 16,状态 1,第 3 行
--不允许对系统目录进行即席更新。
--------------------------------------------------------------------------
--测试2
IF OBJECT_ID('TEMP1') IS NOT NULL DROP TABLE TEMP1
GO
CREATE TABLE TEMP1(COL1 INT,COL3 INT,COL2 INT)
INSERT INTO TEMP1
SELECT COL1,COL3,COL2 FROM TB
DROP TABLE TB
GO
CREATE TABLE TB(COL1 INT,COL3 INT,COL2 INT)
INSERT INTO TB
SELECT * FROM TEMP1SELECT * FROM TB
--成功
虽然很笨,但能实现
(
COL1 int NULL,
COL2 int NULL,
COL3 int NULL
) ON [PRIMARY]
INSERT INTO TB SELECT 1,2,3--以下为SQL 2005的做法,是使用SQL Server Profiler监控其执行语句总结出来的
CREATE TABLE dbo.Tmp_TB
(
COL2 int NULL,
COL1 int NULL,
COL3 int NULL
) ON [PRIMARY]IF EXISTS(SELECT * FROM dbo.TB)
EXEC('INSERT INTO dbo.Tmp_TB (COL2, COL1, COL3)
SELECT COL2, COL1, COL3 FROM dbo.TB WITH (HOLDLOCK TABLOCKX)')DROP TABLE dbo.TBEXECUTE sp_rename N'dbo.Tmp_TB', N'TB', 'OBJECT'