sql-server - 将列值分配给 mssql 中的变量
问题描述
我正在尝试将架构的所有表名分配给一个变量。稍后,我希望为每个表创建一个更新触发器。我正在使用以下方法提取表格:
select table_name from information_schema.tables;
当我执行以下操作时,我得到空值:
declare @tablename nvarchar(max)
select table_name = @tablename from information_schema.tables;
我在 SSMS2016 中使用 mssql,有人可以告诉我如何将表名分配给变量吗?
解决方案
这是一个非常好的问题,如果为每个表创建触发器是个好主意,但是 - 每当我需要创建语句时 - 我建议这样做:
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
...
下一步是将所有这些语句复制到一个新的查询窗口并根据您的需要进行调整。
推荐阅读
- python - 如何使用 DBSCAN 设置好的参数对高密度数据进行聚类?
- sql - 将字段添加到 SELECT *
- circuit-sdk - 通过 REST API 从 Circuit Conversation 下载附件
- python - 我怎么知道什么时候在 QTextEdit 上按下了 Enter 键
- android - 如何在 onResponse 中捕获 Retrofit 响应错误?
- python - Django 2.2.4 - 在 makemigrations 之后运行迁移时“没有要应用的迁移”
- python - 字典列表中字典列表的Glom规范
- java - 如何制作 MPAndroidChart RadarChart 圆形
- ruby-on-rails - 控制器中的 session.destroy
- python - 从两个日期列填充月份数据框