我有一个名为tr_log的日志表,其中描述列是反映更新详细信息的位置,但我在表中获得空记录。我已经完成了删除和插入操作,并插入了正确的语句
if ($http_x_forwarded_proto = "http") { return 301 https://$host$request_uri; }
答案 0 :(得分:3)
与NULL连接的任何内容都会导致NULL。确保将所有变量/字段与COALESCE()连接起来(如果你在SQL Server上,也可以使用ISNULL())。
顺便说一句,触发器中的循环和游标对于性能来说非常糟糕。试试这个:
insert into tr_log(description)
SELECT
'Emp with ' + cast(dat2.id as nvarchar(20)) + dat2.[NameChanged] + dat2.[SalaryChanged]
FROM (
SELECT
dat1.*,
CASE
WHEN oldname<>[newname] THEN ' with name ' + ISNULL([oldname],'NULL') + ' has been updated to ' + ISNULL([newname],'NULL')
ELSE ''
END AS [NameChanged],
CASE
WHEN oldsalary<>newsalary THEN ' with salary ' + cast(ISNULL(oldsalary,0) as nvarchar(20))+ ' has been updated to ' + cast(ISNULL(newsalary,0) as nvarchar(20))
ELSE ''
END AS [SalaryChanged]
FROM (
SELECT
i.id AS [ID],i.name AS [newname],i.sal AS [newsalary],d.name AS [oldname],d.sal AS [oldsalary]
FROM inserted i
INNER JOIN deleted d On i.ID=d.ID
) dat1
) dat2