2015-07-10 65 views
1

Here is the link to the solution I found and used在这个问题中提供的代码应该完全解决我的情况。更新许多表的列值,只有1行受影响

但是,只有1行受到影响。我想知道这是否意味着我应该添加一个循环或其他条件以使其遍历所有表格。

Declare @ColName as nVarchar(100), @NewValue as nVarchar(50) 
    Set @ColName = 'test_column' -- 'your col name' 
    Set @NewValue = getDate() -- your date time value 
    Select 'Update ' + TABLE_NAME + ' set ' + COLUMN_NAME + ' = ''' + @NewValue + '''' From INFORMATION_SCHEMA.COLUMNS Where column_name = 'test_column' 
+2

您需要将您的代码添加到问题中。不要只是指向我们的链接,并要求我们猜测。 – Yatrix

+0

谢谢你的建议。我只是更新了代码。希望它能让任何人看到这一点变得轻松。 – user3546425

回答

1

您一次只能更新一个表格。您可以更新同一个表或多个列中的多个行,但不能更新单个更新中的多个表。你需要一个循环来迭代每个更新表。

Select 'UPDATE ' + TABLE_NAME + ' SET CreatedDateTime = ''<<New Value>>'' ' AS SqlStatement INTO #T 
From INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME = 'CreatedDateTime' 

WHILE EXISTS (SELECT * FROM #T) BEGIN 
    DECLARE @Sql VARCHAR(4000) = (SELECT TOP 1 SqlStatement FROM #T) 
    EXEC (@Sql) 
    DELETE #T WHERE SqlStatement = @Sql 
END 
+0

如果它解决了您的问题,如果它帮助您并接受它,请随时提供答案。这有助于他人知道哪些答案可能对您的问题有所帮助。它也增加了你的声誉。 –