有谁知道为什么我在触发器中的联接查询是空的?但是,如果我要将相同的查询放在存储过程中并在触发器之外运行存储过程,它运行良好。但是如果你有一个触发器使用连接表执行这个存储过程,它就会出现空。如果您直接在 sql management studio 中运行存储过程,它会很好地提取数据。如果您在没有连接的情况下运行触发器并且只在一个表上进行简单的选择,它运行良好。
问题似乎是当它在触发器内进行选择并具有联接时。
ALTER TRIGGER dbo.Emergency on dbo.Incident
AFTER INSERT, UPDATE
AS
SET NOCOUNT ON
BEGIN
DECLARE @ID as int;
SELECT top 1 @ID=InsertedRow.Id FROM inserted InsertedRow;
BEGIN
Declare @g as varchar(255);
--this doesn't work with JOIN
SELECT @g=Link
FROM MyDataTable as Incident JOIN MyOtherInformationTable
as Info on Incident.Id=Info.Id
WHERE (Incident.Id=@ID);
/* this works without join
SELECT @g=Link
FROM MyDataTable as Incident
WHERE (Incident.Id=@ID);
*/
END;
END;