将一些字段添加到数据库中的所有表

时间:2012-07-05 10:11:46

标签: sql sql-server

我想添加2个字段:

lastUpdatedUserId
lastUpdatedTime

到我的sql serverdatabase中的所有表。

我怎样才能轻松做到这一点?

2 个答案:

答案 0 :(得分:0)

可能会帮助你

Declare @Count int
Set @Count=0
Declare @Sample TABLE
(Name varchar(max),rowNum int)

Declare @sql nvarchar(max)

Insert into @Sample
SELECT TABLE_NAME ,row_number() over ( order by TABLE_NAME) as rowNum
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE' and TABLE_CATALOG='Your database name'

while @count<(Select max(rowNum) from @Sample)
 BEGIN
 DEclare @Table varchar(max)
 Set @Table=(Select Name from @Sample where rowNum=@Count)

 SET @sql='ALTER Table ' + @table +' Add lastUpdatedUserId int ,lastUpdatedTime   datetime'
 execute (@sql)

Set @count=@count+1
END

更简单的方法是

Declare @Sample Table
(Name nvarchar(max))
 Insert into @Sample
 Select 'ALTER TABLE dbo.' + TABLE_NAME + ' ADD lastUpdatedUserId int NULL' 
 from INFORMATION_SCHEMA.TABLES 
 WHERE TABLE_TYPE = 'BASE TABLE' 

现在执行@Sample表中的语句

答案 1 :(得分:0)

这一行查询将会执行您要执行的操作。

请根据您的要求修改数据类型。

使用sp_msforeachtable系统存储过程。

exec sp_MSforeachtable "ALTER table ? add lastUpdatedUserId varchar(20), lastUpdatedTime datetime PRINT '? modified' "