怎么样用T-SQL实现更改数据库内所有表的时间字段的默认值为getdate()?

时间:2022-04-18 13:47:33
我现在用数据库导入了一个库,但是倒过来的库里面所有的默认值全部掉了,包括主键设置,自增型数据设置都没有,现在得一个个添加。我想知道用t-sql怎么样批量更改数据库中所有datetime型的字段默认值为getdate(),请高手赐教!

22 个解决方案

#1


记下,楼下高手!

#2


这个够难度,我也看看.

#3


此题难解

#4


但是倒过来的库里面所有的默认值全部掉了
==================================
我看應該在這上面做手腳吧,
怎樣才能讓導過來的,都沒掉才是王道

#5


如果是2K DTS导入时选择第三个选项

#6


dts 重新导一次试试

#7


select 'ALTER TABLE '+a.name +'ADD   CONSTRAINT   DE_'+a.name+'_'+b.name +
' default getdate() for '+ b.name, a.id,a.name,b.name,b.type
from sysobjects a
left join syscolumns b
on a.id= b.id
where b.type = 61 and a.type = 'U'


把上面的SQL结果放在查询分析器中运行

#8


select 'ALTER TABLE '+a.name +'ADD   CONSTRAINT   DE_'+a.name+'_'+b.name +
' default getdate() for '+ b.name + ' go '
from sysobjects a
left join syscolumns b
on a.id= b.id
where b.type = 61 and a.type = 'U'

#9


happyflystone 的代码我运行了一下,没啥反应啊。 再次在导入是不可能的,因为导入好了以后,系统不可能在导入了。

#10


select 'ALTER TABLE '+a.name +'ADD   CONSTRAINT   DE_'+a.name+'_'+b.name +
' default getdate() for '+ b.name + ' go '
from sysobjects a
left join syscolumns b
on a.id= b.id
where b.type = 61 and a.type = 'U'
运行后有结果集吗?

#11


select 'ALTER TABLE '+a.name +' ADD CONSTRAINT   DE_'+a.name+'_'+b.name +
' default getdate() for '+ b.name + ' go '
from sysobjects a
left join syscolumns b
on a.id= b.id
where b.type = 61 and a.type = 'U'



更正一下,上午少一个空格

#12


最新


select 'ALTER TABLE '+a.name +' ADD CONSTRAINT DE_'+a.name+'_'+b.name +
' default getdate() for '+ b.name + ' 
go '
from sysobjects a
left join syscolumns b
on a.id= b.id
where b.type = 61 and a.type = 'U'



结果 :

ALTER TABLE NCP_GuestTrade ADD CONSTRAINT DE_NCP_GuestTrade_TradeTime default getdate() for TradeTime 
go 

(所影响的行数为 1 行)


运行:
ALTER TABLE NCP_GuestTrade ADD CONSTRAINT DE_NCP_GuestTrade_TradeTime default getdate() for TradeTime 
go

命令成功

#13


看也看不懂了

#14


他是生成 ALTER TABLE NCP_GuestTrade ADD CONSTRAINT DE_NCP_GuestTrade_TradeTime default getdate() for TradeTime 
go 

语句的  然后让你执行这条语句

#15


根据系统 表的数据 自动生成 所有的datatime字段 

#16


经过测试,石头的东西完全正确.

顶你丫的.

#17


happyflystone 
这样给某列加默认值约束,对在现成表上的数据是不变的。
只有再在该表上插入数据,才会体现。
也就是说:数据存在,然后加默认值约束,数据还是不变;插入数据,默认值出现。历史数据还是需要做更新的。

#18


奇怪,你们测试的都是正确的,我的上面生成的都是空的,我字段里面确实有很多datetime数据的啊,SQLSERVER2000的数据库的

#19


happyflystone   
这样给某列加默认值约束,对在现成表上的数据是不变的。 
只有再在该表上插入数据,才会体现。 
也就是说:数据存在,然后加默认值约束,数据还是不变;插入数据,默认值出现。历史数据还是需要做更新的。

----

他只是缺省这个属性没了,原来的数据还是带进来了,加缺省是为了新增的数据吧

#20


你试试我这个 :
select    'ALTER TABLE '+a.name +' ADD CONSTRAINT DE_'+a.name+'_'+b.name +
' default getdate() for '+ b.name + ' 
go '

from sysobjects a
,syscolumns b
where b.type = 111 and
 a.type = 'U'
and b.id= a.id

happyflystone   的TYPR是61 2000应该是111 

ALTER TABLE as10 ADD CONSTRAINT DE_as10_asssssss default getdate() for asssssss   go 
ALTER TABLE trc20070913 ADD CONSTRAINT DE_trc20070913_StartTime default getdate() for StartTime   go 
ALTER TABLE trc ADD CONSTRAINT DE_trc_StartTime default getdate() for StartTime   go 
ALTER TABLE Table2 ADD CONSTRAINT DE_Table2_asd default getdate() for asd   go 
ALTER TABLE table1 ADD CONSTRAINT DE_table1_clo2 default getdate() for clo2   go 
ALTER TABLE as4 ADD CONSTRAINT DE_as4_clo2 default getdate() for clo2   go 
ALTER TABLE as5 ADD CONSTRAINT DE_as5_clo2 default getdate() for clo2   go 
ALTER TABLE test1 ADD CONSTRAINT DE_test1_clo2 default getdate() for clo2   go 

#21


对的,友第的是对的啊,难怪 happyflystone 的代码我怎么运行都不行。OK,可以结贴了。

#22


 楼上正解,在这样做之前觉得还是应该判断下是不是默认值掉了还是默认规则掉了

要不上面的会出错

#1


记下,楼下高手!

#2


这个够难度,我也看看.

#3


此题难解

#4


但是倒过来的库里面所有的默认值全部掉了
==================================
我看應該在這上面做手腳吧,
怎樣才能讓導過來的,都沒掉才是王道

#5


如果是2K DTS导入时选择第三个选项

#6


dts 重新导一次试试

#7


select 'ALTER TABLE '+a.name +'ADD   CONSTRAINT   DE_'+a.name+'_'+b.name +
' default getdate() for '+ b.name, a.id,a.name,b.name,b.type
from sysobjects a
left join syscolumns b
on a.id= b.id
where b.type = 61 and a.type = 'U'


把上面的SQL结果放在查询分析器中运行

#8


select 'ALTER TABLE '+a.name +'ADD   CONSTRAINT   DE_'+a.name+'_'+b.name +
' default getdate() for '+ b.name + ' go '
from sysobjects a
left join syscolumns b
on a.id= b.id
where b.type = 61 and a.type = 'U'

#9


happyflystone 的代码我运行了一下,没啥反应啊。 再次在导入是不可能的,因为导入好了以后,系统不可能在导入了。

#10


select 'ALTER TABLE '+a.name +'ADD   CONSTRAINT   DE_'+a.name+'_'+b.name +
' default getdate() for '+ b.name + ' go '
from sysobjects a
left join syscolumns b
on a.id= b.id
where b.type = 61 and a.type = 'U'
运行后有结果集吗?

#11


select 'ALTER TABLE '+a.name +' ADD CONSTRAINT   DE_'+a.name+'_'+b.name +
' default getdate() for '+ b.name + ' go '
from sysobjects a
left join syscolumns b
on a.id= b.id
where b.type = 61 and a.type = 'U'



更正一下,上午少一个空格

#12


最新


select 'ALTER TABLE '+a.name +' ADD CONSTRAINT DE_'+a.name+'_'+b.name +
' default getdate() for '+ b.name + ' 
go '
from sysobjects a
left join syscolumns b
on a.id= b.id
where b.type = 61 and a.type = 'U'



结果 :

ALTER TABLE NCP_GuestTrade ADD CONSTRAINT DE_NCP_GuestTrade_TradeTime default getdate() for TradeTime 
go 

(所影响的行数为 1 行)


运行:
ALTER TABLE NCP_GuestTrade ADD CONSTRAINT DE_NCP_GuestTrade_TradeTime default getdate() for TradeTime 
go

命令成功

#13


看也看不懂了

#14


他是生成 ALTER TABLE NCP_GuestTrade ADD CONSTRAINT DE_NCP_GuestTrade_TradeTime default getdate() for TradeTime 
go 

语句的  然后让你执行这条语句

#15


根据系统 表的数据 自动生成 所有的datatime字段 

#16


经过测试,石头的东西完全正确.

顶你丫的.

#17


happyflystone 
这样给某列加默认值约束,对在现成表上的数据是不变的。
只有再在该表上插入数据,才会体现。
也就是说:数据存在,然后加默认值约束,数据还是不变;插入数据,默认值出现。历史数据还是需要做更新的。

#18


奇怪,你们测试的都是正确的,我的上面生成的都是空的,我字段里面确实有很多datetime数据的啊,SQLSERVER2000的数据库的

#19


happyflystone   
这样给某列加默认值约束,对在现成表上的数据是不变的。 
只有再在该表上插入数据,才会体现。 
也就是说:数据存在,然后加默认值约束,数据还是不变;插入数据,默认值出现。历史数据还是需要做更新的。

----

他只是缺省这个属性没了,原来的数据还是带进来了,加缺省是为了新增的数据吧

#20


你试试我这个 :
select    'ALTER TABLE '+a.name +' ADD CONSTRAINT DE_'+a.name+'_'+b.name +
' default getdate() for '+ b.name + ' 
go '

from sysobjects a
,syscolumns b
where b.type = 111 and
 a.type = 'U'
and b.id= a.id

happyflystone   的TYPR是61 2000应该是111 

ALTER TABLE as10 ADD CONSTRAINT DE_as10_asssssss default getdate() for asssssss   go 
ALTER TABLE trc20070913 ADD CONSTRAINT DE_trc20070913_StartTime default getdate() for StartTime   go 
ALTER TABLE trc ADD CONSTRAINT DE_trc_StartTime default getdate() for StartTime   go 
ALTER TABLE Table2 ADD CONSTRAINT DE_Table2_asd default getdate() for asd   go 
ALTER TABLE table1 ADD CONSTRAINT DE_table1_clo2 default getdate() for clo2   go 
ALTER TABLE as4 ADD CONSTRAINT DE_as4_clo2 default getdate() for clo2   go 
ALTER TABLE as5 ADD CONSTRAINT DE_as5_clo2 default getdate() for clo2   go 
ALTER TABLE test1 ADD CONSTRAINT DE_test1_clo2 default getdate() for clo2   go 

#21


对的,友第的是对的啊,难怪 happyflystone 的代码我怎么运行都不行。OK,可以结贴了。

#22


 楼上正解,在这样做之前觉得还是应该判断下是不是默认值掉了还是默认规则掉了

要不上面的会出错