需要遍历DB&中的所有表格在条件匹配时触发一些查询

时间:2016-06-14 08:26:21

标签: sql sql-server sql-server-2008

我正在使用sql server 2008.我想循环遍历数据库中的所有表格,并使用特定的名称&想要仅更新enddatetime列数据与当前日期和时间匹配的记录。 enddatetime列存在于所有表中。在网上搜索后我遇到了这个代码,但我无法修改它以进行更新查询。请有人用正确的代码指导我吗?

EXEC sp_MSforeachtable
'
DECLARE @DateTimeToSearch datetime = GETDATE()

IF ''?'' LIKE ''%_PHGH_LINK_DETAILS%''
BEGIN
SELECT * FROM ? WHERE enddate = @DateTimeToSearch
END
'

1 个答案:

答案 0 :(得分:0)

对于具有匹配字符串的表名,请使用以下查询

EXEC sp_MSforeachtable
'

IF ''?'' LIKE ''%yourtablename%''
BEGIN
Update ? set col1 = value where enddatetime = Getdate()
END'

对于特定的表列表,请使用以下查询

EXEC sp_MSforeachtable
'

IF ''?'' in ( ''[schema-name1].[table-name1]'',''[schema-name2].[table-name2]'')
BEGIN
 Update ? set col1 = value where enddatetime = Getdate()
END'