Still did not work correctly. I added the FROM to intersect as Melissa suggested and modified the trigger as shown below. I tested running an UPDATE with none of the columns changing and it still created a row in tblActualMealsAudit table.
ALTER TRIGGER [dbo].[trgActualMealsAudit]
ON [dbo].[tblActualMeals]
AFTER INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @idnumber AS INT;
SELECT @idnumber = CONVERT (INT, session_context(N'USERID'));
IF EXISTS (SELECT * FROM deleted)
BEGIN
INSERT INTO [dbo].[tblActualMealsAudit]
([MealID]
,[PatientID]
,[MealName]
,[MealDate]
,[Instructions]
,[Verified]
,[MealNumber]
,[Caregiver]
,[UserLoginID]
)
SELECT
i.MealID,
i.PatientID,
i.MealName,
i.MealDate,
i.Instructions,
i.Verified,
i.MealNumber,
i.Caregiver,
@idnumber
FROM deleted AS i;
END
ELSE
BEGIN
IF NOT EXISTS (SELECT * FROM inserted)
BEGIN
RETURN;
END
INSERT INTO [dbo].[tblActualMealsAudit]
([MealID]
,[PatientID]
,[MealName]
,[MealDate]
,[Instructions]
,[Verified]
,[MealNumber]
,[Caregiver]
,[UserLoginID]
)
SELECT
i.MealID,
i.PatientID,
i.MealName,
i.MealDate,
i.Instructions,
i.Verified,
i.MealNumber,
i.Caregiver,
@idnumber
FROM inserted AS i;
END
END