将列值分配给mssql中的变量

时间:2019-10-15 14:38:45

标签: sql-server tsql variables

我正在尝试将模式的所有表名分配给一个变量。稍后,我希望为每个表创建一个更新触发器。 我正在使用:

提取表
select table_name from information_schema.tables;

执行以下操作时,我会得到空值:

declare @tablename nvarchar(max)
select table_name = @tablename from information_schema.tables;

我在SSMS2016中使用mssql,有人可以告诉我如何将表名分配给变量吗?

1 个答案:

答案 0 :(得分:1)

这是一个非常好的问题,是否可以为每个表创建一个触发器,但是-每当我需要 create 语句时-我建议这样做:

select CONCAT('CREATE TRIGGER ',QUOTENAME(CONCAT(table_name,'_trigger')),' ON ',QUOTENAME(table_name),' AFTER UPDATE AS BEGIN PRINT ''yeah!''; END',CHAR(13),CHAR(10),'GO' )
from information_schema.tables
where TABLE_TYPE='BASE TABLE';

将输出发送到文本,您将得到:

CREATE TRIGGER [SomeTable_trigger] ON [SomeTable] AFTER UPDATE AS BEGIN PRINT 'yeah!'; END
GO
CREATE TRIGGER [Another_trigger] ON [Another] AFTER UPDATE AS BEGIN PRINT 'yeah!'; END
GO
... more of this...
GO
...

下一步是将所有这些语句复制到新的查询窗口中,并使其适应您的需求。