来自触发器的INSERT查询插入NULL

时间:2013-05-24 22:03:32

标签: tsql triggers null sql-insert

我在SQL Server 2005中有以下查询:

DECLARE @issueid numeric(10,0)
DECLARE @domain nvarchar (255)

SET @issueid = (SELECT issueid FROM issues WHERE issueid = 4850)
SET @domain = (SELECT fielddata FROM customfielddata WHERE issueid = @issueid AND customfieldid = 99)

PRINT CONVERT(NVARCHAR, @issueid) + ': ' + @domain

按预期输出结果:

4850: www.domain.com

当我在触发器中有相同的查询时,它会在第一列中正确插入@issueid值,但在第二列中NULL代替@section_name

CREATE TRIGGER trigger_website_sections
   ON  gemini_issues
   AFTER INSERT
AS
BEGIN
    SET NOCOUNT ON;

    IF (SELECT issuetypeid FROM inserted) = 58 BEGIN

        DECLARE @issueid numeric(10,0)
        DECLARE @domain nvarchar (255)

        SET @issueid = (SELECT issueid FROM inserted)
        SET @domain = (SELECT fielddata FROM customfielddata WHERE issueid = @issueid AND customfieldid = 99)

        INSERT INTO website_sections VALUES (@issueid, @domain);
    END

END

有人可以帮忙找出原因吗?

1 个答案:

答案 0 :(得分:0)

好的,经过一些工作,我意识到因为customfielddata中的行只在issues中创建了一行后才创建(第二行是主表,第一行存储了补充数据)创建记录),customfielddata上的查询将返回NULL

尝试将字符串与NULL连接起来会返回NULL,这就是插入行中的内容。

神秘解决了。