我在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
有人可以帮忙找出原因吗?
答案 0 :(得分:0)
好的,经过一些工作,我意识到因为customfielddata
中的行只在issues
中创建了一行后才创建(第二行是主表,第一行存储了补充数据)创建记录),customfielddata
上的查询将返回NULL
。
尝试将字符串与NULL
连接起来会返回NULL
,这就是插入行中的内容。
神秘解决了。