mysql - 在 ALTER_PROCEDURE DDL 触发器中获取过程名称

标签 mysql sql sql-server tsql

我制作了一个 SQL 触发器,每当我的数据库中的任何存储过程发生更改时,它都会发送电子邮件警报。我可以在电子邮件中包含 SP 的名称吗?如何调用特定的 SP 名称以显示在电子邮件中?

这是我的代码:

ALTER TRIGGER [send_Email_to_User_ALTER]
ON DATABASE--msdb.dbo.[sp_send_dbmail]
AFTER ALTER_PROCEDURE
AS

--BEGIN 
--SET NOCOUNT ON;

EXEC msdb.dbo.[sp_send_dbmail]
@profile_name = 'Test Alert',
@recipients = 'email@outlook.com',
@body = 'A STORED PROCEDURE HAS BEEN ALTERED.'  , 
@subject = 'ALERT System SP Change Notification';  

最佳答案

试试这个:

ALTER TRIGGER [send_Email_to_User_ALTER] 
ON DATABASE--msdb.dbo.[sp_send_dbmail]
AFTER ALTER_PROCEDURE
AS


--BEGIN 
--SET NOCOUNT ON;
DECLARE @data XML
SET @data = EVENTDATA()      
DECLARE @objName Nvarchar(max)
SET @objName = (SELECT  @data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'nvarchar(256)'))

DECLARE @body NVARCHAR(MAX)
SET @body = 'A STORED PROCEDURE HAS BEEN ALTERED.' + @objName 

EXEC msdb.dbo.[sp_send_dbmail]
@profile_name = 'Test Alert',
@recipients = 'email@outlook.com',
@body = @body , 
@subject = 'ALERT System SP Change Notification'; 

关于mysql - 在 ALTER_PROCEDURE DDL 触发器中获取过程名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48453324/

相关文章:

php - 仅当存在元值 #2 和元键 #2 时,为元键 #1 设置元值 #1

mysql - 使用 avg 的 where 子句子查询

sql-server - 插入触发器后 - SQL Server 2008

php - SQL-Server 'uniqueidentifier' 列类型到 MySQL 的迁移问题

javascript - 使用 .checked() 函数时仅检测到第一个单选按钮。休息不考虑

php - 将参数从一个 PHP 页面传递到另一个页面 - 它总是获得最大的 (MySQL)

mysql - 如何合并来自同一个表的两个sql查询

sql - 如何在没有 key 的情况下删除插入的记录?

sql - SQLSERVER 中的 ListAGG

mysql - 仅选择具有链接记录的记录