【发布时间】:2013-05-21 14:27:18
【问题描述】:
首先让我承认我是 SQL Server 新手。
这是交易:我正在尝试在 SQL Server 2012 中的表上创建触发器,并且每当我在触发器中尝试任何类型的 SELECT 语句时,该表都会停止工作(因为没有什么可以插入,直到触发器被删除)。我一放下扳机,一切就又开始工作了。如果我不做任何SELECTs,一切都很美好。是否有许可或我遗漏的地方?
例子:
CREATE TRIGGER sometrigger
ON sometable
FOR INSERT
AS
BEGIN
SELECT * FROM inserted
END
GO
命令成功完成,但表格如上所述冻结。
CREATE TRIGGER sometrigger
ON sometable
FOR INSERT
AS
BEGIN
EXEC msdb.dbo.sp_send_dbmail
@recipients = N'someaddress@somedomain.com',
@subject = 'test',
@body = 'test body',
@profile_name = 'someprofile'
END
GO
像魅力一样工作。
【问题讨论】:
-
您为什么要从触发器中执行
select *?谁会看到结果集? -
您是如何尝试插入“停止工作”的?是来自隐藏异常/错误消息的东西吗?
-
@Andomar 我不会,这只是详细说明我的问题的一个简单示例。
-
@Damien_The_Unbeliever 插入来自使用数据库作为事件日志的系统。我只是通过登录/退出该系统或任何其他将事件添加到表中的方式来生成它们。该系统上没有显示任何错误。
-
尝试自己编写一个
INSERT语句并在查询分析器中运行它,看看是否有错误消息。
标签: sql sql-server select triggers sql-server-2012