Hi Alexey,
the web40repADusernodisplayname only filters users without Displayname, as you can see looking at its definition below:
CREATE VIEW [dbo].[web40repADusernodisplayname]
AS
SELECT TOP 1000000
Userdomain + '\' + Username AS Displayname,
Username,
Userdomain,
Name,
'usersm.png' AS icon,
IsEnabled AS EnabledInAD,
Lastchanged
FROM tblADusers
WHERE (Displayname LIKE '') OR (Displayname IS NULL)
ORDER BY Userdomain + '\' + Username
You need instead merging two selects (with a union) one providing the tblADusers.Displayname when it is not null or empty and the other the opposite case.
However, instead of using a union you can check whether @Displayname is null or empty and set it via another select.
CREATE TRIGGER mytrigger ON [tblAssets]
AFTER UPDATE AS
BEGIN
SET NOCOUNT ON;
DECLARE @Displayname nvarchar(301), @deletedUserdomain nvarchar(150), @deletedUsername nvarchar(150), @insertedUserdomain nvarchar(150), @insertedUsername nvarchar(150);
SELECT @deletedUserdomain = Userdomain, @deletedUsername = Username from deleted;
SELECT @insertedUserdomain = Userdomain, @insertedUsername = Username from inserted;
if @insertedUserdomain is not null and @insertedUsername is not null and ( @insertedUserdomain <> @deletedUserdomain or @insertedUsername <> @deletedUsername )
BEGIN
SELECT @Displayname = Displayname from tblADusers, inserted where tblADusers.Userdomain = inserted.Userdomain and tblADusers.Username = inserted.Username;
if @Displayname is null or @Displayname = ''
SELECT @Displayname = Userdomain + '\' + Username from inserted;
Update [tblAssets]
Set [Description] = [Description] + ' used by ' + @Displayname
where Description not like '% used by ' + @Displayname + '%'
END
END