当前位置: 首页 > 面试题库 >

sql触发打印消息

楚良平
2023-03-14
问题内容

我是在数据库中使用触发器的新手,我创建了一些对我来说效果很好的触发器,除了当我尝试创建一个在删除一行后将显示一条消息的触发器时。

我尝试使用此代码:

ALTER TRIGGER "mycustomerTrigger" 
AFTER delete ON customers
FOR EACH ROW
BEGIN ATOMIC
print 'trigger is working'
END

当我创建此触发器时,它不会给出错误消息,但是当我删除一行时,它不会显示我打印的消息。


问题答案:

这是因为触发器的运行方式,基本上它不在查询执行窗口中。一种方法是登录到事件查看器。

Create trigger TestTrigger on
tablefortrigger
for insert
as
鈥揇eclare variable to hold message
Declare @Msg varchar(8000)
鈥揂ssign to message 鈥淎ction/Table Name/Time Date/Fields inserted
set @Msg = 鈥業nserted | tablefortrigger | 鈥� + convert(varchar(20), getdate()) + 鈥� | 鈥�
+(select convert(varchar(5), track)
+ 鈥�, 鈥� + lastname + 鈥�, 鈥� + firstname
from inserted)
鈥揜aise Error to send to Event Viewer
raiserror( 50005, 10, 1, @Msg)

执行此操作的另一种方法是写入文件,这里当然存在权限问题,但是您可以执行以下操作:

Alter trigger TestTrigger on
tablefortrigger
for insert
as
Declare @Msg varchar(1000)
鈥揥ill hold the command to be executed by xp_cmdshell
Declare @CmdString varchar (2000)
set @Msg = 鈥業nserted | tablefortrigger | 鈥� + convert(varchar(20), getdate()) + 鈥� 鈥� 鈥�
+(select convert(varchar(5), track)
+ 鈥�, 鈥� + lastname + 鈥�, 鈥� + firstname
from inserted)
鈥揜aise Error to send to Event Viewer
raiserror( 50005, 10, 1, @Msg)
set @CmdString = 鈥榚cho 鈥� + @Msg + 鈥� >> C:logtest.log鈥�
鈥搘rite to text file
exec master.dbo.xp_cmdshell @CmdString

可以在这里找到更多信息:http : //www.sql-server-performance.com/2005/log-file-
trigger/



 类似资料:
  • 本文向大家介绍Microsoft SQL Server 打印,包括了Microsoft SQL Server 打印的使用技巧和注意事项,需要的朋友参考一下 示例 向输出控制台显示一条消息。使用SQL Server Management Studio,它将显示在消息选项卡中,而不是结果选项卡中:            

  • 问题内容: 我正在验证器中发出很多警告,并且我想抑制stdout中的所有内容,除非提供给的消息。 即,现在我看到了: 我想看看这个: 编辑2: 覆盖工作: 问题答案: 具有您自己的自定义功能的Monkeypatch 。

  • 我正在使用Python 3.8执行一个Discord bot,我在_member_join()上的事件

  • SQL Server触发器是特殊的存储过程,它们会自动执行以响应数据库对象,数据库和服务器事件。 SQL Server提供三种类型的触发器: 数据操作语言(DML)触发器,它们响应针对表的INSERT,UPDATE和DELETE事件而自动调用。 数据定义语言(DDL)触发器响应CREATE,和DROP语句而触发。 DDL触发器也会响应执行类似操作的某些系统存储过程而触发。 登录触发器以响应事件而触

  • 主要内容:创建触发器,示例在本章中,我们将讨论和学习PL/SQL中的触发器。 触发器是存储的程序,在发生某些事件时会自动执行或触发。事实上,触发器是为了响应以下任何事件而被执行的 - 数据库操作(DML)语句(,或) 数据库定义(DDL)语句(,或)。 数据库操作(,,,或)。 可以在事件关联的表,视图,模式或数据库上定义触发器。 使用触发器的好处 触发器可以用于以下目的 - 自动生成一些派生列值 强化参照完整性 事件记录

  • 你可以使用printf将消息打印到控制台,从而知道应用程序是如何运行的。这是调试代码的很有用的手段,因为你可以打印变量的值、知道什么时候代码将阻塞等等。 我们尝试使用函数unsigned char leds_get(void);打印LED的状态。 获取LED的状态,并将其打印到屏幕。修改test-leds.c如下: #include "contiki.h" #include "dev/leds.h