繁体   English   中英

我在多个表中有相同的列,并希望将所有表中的列更新为特定值。我怎样才能做到这一点?

[英]I have the same column in multiple tables, and want to update that column in all tables to a specific value. How can I do this?

该列是“CreatedDateTime”,这是非常明显的。 它跟踪记录提交的任何时间。 我需要在超过100个表中更新这个值,并且宁愿有一个很酷的SQL技巧,可以在几行中完成,而不是复制粘贴100行,唯一的区别是表名。

任何帮助将不胜感激,很难找到任何更新表中的列(这很奇怪,可能是不好的做法反正,我很抱歉)。

谢谢!

编辑:这篇文章向我展示了如何获得所有具有该列的表

我想显示所有指定列名的表

如果这有任何帮助。 无论如何,这对我来说都是一个开始。

如果这是一次性任务,只需运行此查询,将结果复制并粘贴到查询窗口并运行它

Select 'UPDATE ' + TABLE_NAME + ' SET CreatedDateTime = ''<<New Value>>'' '
From INFORMATION_SCHEMA.COLUMNS 
WHERE COLUMN_NAME = 'CreatedDateTime'

您可以尝试使用游标:像这样

declare cur cursor for Select Table_Name From INFORMATION_SCHEMA.COLUMNS Where column_name = 'CreatedDateTime'
declare @tablename nvarchar(max)
declare @sqlstring nvarchar(max)

open cur
    fetch next from cur into @tablename
    while @@fetch_status=0
    begin
        --print @tablename

        set @sqlstring = 'update ' + @tablename + ' set CreatedDateTime = getdate()'

        exec sp_executesql @sqlstring

        fetch next from cur into @tablename
    end

close cur
deallocate cur

您可以使用Information_Schema.Columns为您构建更新脚本。

    Declare @ColName as nVarchar(100), @NewValue as nVarchar(50) 
    Set @ColName = 'Modified'  -- 'your col name'
    Set @NewValue = '2013-11-04 15:22:31' -- your date time value
    Select 'Update ' + TABLE_NAME + ' set ' + COLUMN_NAME + ' = ''' + @NewValue + '''' From INFORMATION_SCHEMA.COLUMNS Where column_name = 'modified'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM