0

有谁知道为什么我在触发器中的联接查询是空的?但是,如果我要将相同的查询放在存储过程中并在触发器之外运行存储过程,它运行良好。但是如果你有一个触发器使用连接表执行这个存储过程,它就会出现空。如果您直接在 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;
4

1 回答 1

1

下面的触发器将从事件中返回新插入或更新的记录,并在 MyOtherInformationTable 中匹配数据。

ALTER TRIGGER dbo.Emergency  on dbo.Incident 
AFTER INSERT, UPDATE
AS 
BEGIN
   SET NOCOUNT ON

    select *
    from 
    inserted 
    left join MyOtherInformationTable on inserted.ID = MyOtherInformationTable.ID

END;
于 2013-09-11T19:31:17.030 回答