0
USE [ddb]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[requeststrigger]
ON [dbo].[requests]
AFTER INSERT,UPDATE
AS
BEGIN
DECLARE @email VARCHAR(400);
DECLARE @firstname VARCHAR(400);
DECLARE @requestno VARCHAR(400);
DECLARE @lastname VARCHAR(400);
DECLARE @statusid INT;
DECLARE thecursor CURSOR FOR SELECT inserted.requestno,contacts.firstname,contacts.lastname,contacts.email FROM request_contacts,contacts,inserted WHERE request_contacts.requestid=inserted.requestid AND contacts.contactid=request_contacts.contactid AND request_contacts.notification=1 AND contacts.notification=1;
SET @statusid = (SELECT statusid FROM inserted);
IF @statusid = 4 AND @statusid <> (SELECT statusid FROM deleted)
BEGIN
SET NOCOUNT ON
SET ARITHABORT ON
OPEN thecursor;
FETCH NEXT FROM thecursor
INTO @requestno,@firstname,@lastname,@email
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC MAIL_SEND @email,@firstname,@requestno,@lastname;
FETCH NEXT FROM thecursor
INTO @requestno,@firstname,@lastname,@email
END
CLOSE thecursor;
DEALLOCATE thecursor
SET NOCOUNT OFF
END
END
这只是使整个UPDATE/INSERT不起作用。当我删除游标声明时,它可以工作。游标只是从名为“contacts”的同一个数据库中存在的表中选择一个字段。哪里不对?光标内触发器不工作
你想要做什么? – gbn 2010-07-29 07:07:13
每当TABLE1的触发器被触发时(当一行被插入/更新时),我想跳到TABLE2另一个表并获取与TABLE1中的该记录相关的所有记录(通过外键),然后遍历这些结果调用一个程序与他们做某事。 – johnshaddad 2010-07-29 07:09:56
有什么想法可以帮助这个吗? – johnshaddad 2010-07-29 07:40:15