Alter Table tablename
Add columnname columntype Null

解决方案 »

  1.   

    to BreatIvan:
      这样只能添加在表的最后面我想把他插到表的中间
      

  2.   

    Alter Table tablename
    Add columnname columntype Null 插在什么位置无所谓的,完全可以在select 中将它提前的
      

  3.   

    BEGIN TRANSACTION
    SET QUOTED_IDENTIFIER ON
    SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
    SET ARITHABORT ON
    SET NUMERIC_ROUNDABORT OFF
    SET CONCAT_NULL_YIELDS_NULL ON
    SET ANSI_NULLS ON
    SET ANSI_PADDING ON
    SET ANSI_WARNINGS ON
    COMMIT
    BEGIN TRANSACTION
    CREATE TABLE dbo.Tmp_test
    (
    id int NOT NULL,
    dd char(10) NULL,
    epl text NOT NULL
    )  ON [PRIMARY]
     TEXTIMAGE_ON [PRIMARY]
    GO
    IF EXISTS(SELECT * FROM dbo.test)
     EXEC('INSERT INTO dbo.Tmp_test (id, epl)
    SELECT id, epl FROM dbo.test TABLOCKX')
    GO
    DROP TABLE dbo.test
    GO
    EXECUTE sp_rename N'dbo.Tmp_test', N'test', 'OBJECT'
    GO
    COMMIT
      

  4.   

    wwq_jeff(飞雪)说的对。但如果你的程序是用select *来选择数据的,的确需要一个确定的字段顺序。不知道有没有办法直接插入字段。我原来的做法是建立一个新表,然后把数据添进来。其实这样做的效率也不会低很多。
      

  5.   

    TO wwq_jeff(飞雪):
       问题是我的表的字段是是动态增加的,而且增加的字段的字段名事先无法知道(由另一个表间接完成字段的添加也就是说对该表的查询和字段插入在两个不同的模块中完成)。所以只能用select * form tablename 类的语句查询,用你所说的方法好象行不通难道我还要来两次查询,第一次获得所有的字段名,第二次再对字段排序吗。。???
      

  6.   

    可以先取得字段名的(有排序)集合:
    select name from syscolumns 
    where id = object_id(N'[dbo].[TableName]') order by name 然后再由这个集合组成SQL语句:
     select <字段集合>  from tableName2 where ....