CREATE TABLE tb(ID INT,data varchar(10))DECLARE @SQL VARCHAR(1000)SET @SQL='ALTER TABLE tb ADD ['+CAST(DAY(GETDATE()) AS VARCHAR)+'_发出] INT DEFAULT 0'
EXEC(@SQL)INSERT tb(id,data) VALUES(1,'aa')SELECT * FROM tbDROP TABLE tb

解决方案 »

  1.   


    貌似你这跟我说的没什么区别呀。
    我这样插入列后是要动态更新这列的数据的(从别的表里取值,有好几个表连接的,如果取值为空的话就为0),并不是直接插入值
    不知道怎么样设置默认值。。开始我也以为这样设置可以,but in fact ,not..
      

  2.   

    insert #temp(f1,f2) select isnull(f1,0),isnull(f2,0) from otherTable
      

  3.   


    这样就是设置是默认值..而你说到的从另的表里.几个表的连接..如果你得到的是为空(NULL)..
    那就说你已经显式的把NULL插入到列当中了..
    都已经把值插入到列当中了.还谈什么默认值.
      

  4.   

    如果就是用ISNULL()去判断是否为NULL,是就取0的话.那把我的话都忽略掉吧.
      

  5.   

    数据已存在是不能这样用加上with values就行了
    use tempdb
    go
    create table #Temp(ID int)
    insert #Temp select 1
    insert #Temp select 2
    go
    declare @Date datetime,@s nvarchar(1000)
    set @Date=getdate()
    set @s='ALTER TABLE #Temp Add ['+Cast(Day(@Date) As varchar)+'_发出] int default 0 with values'--加上with values
    exec(@s)select * from #Temp
    /*
    ID          26_发出
    ----------- -----------
    1           0
    2           0(2 行受影响)
    */
      

  6.   

    當你再插入數據是就將它設置為0,
    但是你查看以前值依舊是null。