0

我在 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

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

4

1 回答 1

0

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

并尝试将字符串与 aNULL返回 a连接NULL,这就是插入到行中的内容。

谜团已揭开。

于 2013-05-24T23:41:03.607 回答