In SQL Server, every trigger only runs once per statement, not per row, and the pseudo-tables inserted and deleted contain, respectively, the new and old versions of the rows. You must join these on the primary key to match up the versions.
Remember that these tables may contain multiple or no rows. The UPDATE function can tell you if a column was present in the UPDATE command, it will not tell you whether any rows changed.
The trigger runs within the same transaction as the UPDATE, and an error will cause an immediate rollback of all rows. Do not attempt to rollback yourself, this will cause spurious transactional errors. Instead use THROW.
The docs are located here, you should consult them for further syntax.
CREATE TRIGGER RAISE_LIMIT ON EMPLOYEE
AFTER UPDATE
AS
IF (UPDATE(SALARY)
AND EXISTS (SELECT 1
FROM inserted i
JOIN deleted d ON d.ID = i.ID
WHERE i.SALARY > 1.1 * d.SALARY))
BEGIN
THROW 75000, N'Salary increase > 10%', 0;
END;
GO
insertedanddeletedbased on that