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
EXEC(@SQL)INSERT tb(id,data) VALUES(1,'aa')SELECT * FROM tbDROP TABLE tb
貌似你这跟我说的没什么区别呀。
我这样插入列后是要动态更新这列的数据的(从别的表里取值,有好几个表连接的,如果取值为空的话就为0),并不是直接插入值
不知道怎么样设置默认值。。开始我也以为这样设置可以,but in fact ,not..
这样就是设置是默认值..而你说到的从另的表里.几个表的连接..如果你得到的是为空(NULL)..
那就说你已经显式的把NULL插入到列当中了..
都已经把值插入到列当中了.还谈什么默认值.
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 行受影响)
*/
但是你查看以前值依舊是null。