SQL2000中,
Student表中,现在有两列ID,Grade,现在要在Grade列前加入一列Name,varchar(50)
用T—SQL怎么写?

解决方案 »

  1.   

    alter table student add name varchar(50)
      

  2.   

    楼主参考下,将name列放在id和code之间drop table table_test
    go
    create table table_test(id int,code varchar(10))
    go
    alter table table_test add name varchar(20)
    go
    --允许修改系统表
    exec sp_configure 'allow update',1
    reconfigure with override
    go
    update syscolumns
    set colid = colid + 1
    where name in ('code','name') and id = object_id('table_test')
    GO
    update syscolumns
    set colid = 2
    where name = 'name' and id = object_id('table_test')
    go
    --关闭允许修改系统表
    exec sp_configure 'allow update',0
    reconfigure with override
    go
      

  3.   

    Haiwer(海阔天空) ( ) 信誉:138  2007-7-18 11:45:40  得分: 0  
     
     
       
    楼上的方法安全吗?---------------------------------------------
    测试过,可以实现.To:楼主.
    其实列名的位置不重要,关键是你输出结果的顺序
      

  4.   

    谢谢大家!
    在另外一个地方,一位牛人提示用事件探查器来跟踪操作,得到系统中的操作步骤大致如下,列出来供大家参考:
    1.先按你要求的结构生成一个临时表
    2.然后再将你的原有的表的数据加到临时表里面
    3.再删除原有的表 
    4.再将临时表转为你需要使用的表大家可以试一下。不过这样太麻烦了吧。。正如 gahade(与君共勉) 所说,其实列名的位置不重要,关键是你输出结果的顺序。