更新多表的列值,只影响1行

时间:2015-07-10 03:00:20

标签: sql sql-server tsql

Here is the link to the solution I found and used此问题中提供的代码应完全解决我的问题。

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

    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'

1 个答案:

答案 0 :(得分:1)

您一次只能更新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