SQL2005新增字段在表中的排序比如我想把新增字段排在某字段之后,而并不是最后由于表中数据较大,用连接器(客户端工具)直接增加,保存时会提示超时,所以用sql语句alter table table_name add col_name varchar(aaa)来增加字段,但默认的是新增的字段在表中排到了最后所要要如何操作才能不让新增的字段排到最后

解决方案 »

  1.   

    要将新增的字段排到指定的字段后面.
    在SQL SERVER当中很麻烦.你可以测试一下.
    新建一张表.然后打开SQL Profiler跟踪.
    然后在SSMS上.修改这个表.添加一个列..并移动到指定的字段后面.
    看看SQL SERVER为我们做了哪些事情..
      

  2.   

    好像之前有人问过的。
    是通过改变SYSCOLUMNS中的COLORDER来改变顺序的。 先插入,然后再根据COLORDER值来调整。
      

  3.   

    梁哥:
    可不可以通过修改syscolumns.colid来修改?
      

  4.   


    --测试
    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
    --成功
    虽然很笨,但能实现
      

  5.   

    CREATE TABLE dbo.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'