• @@RowCount only looks at the last statement which in this case would be the DECLARE which will always return 0 rows

    Use COUNT(*) from the INSERTED table instead.

    But if the trigger is after an insert or update, then you will always have something in the inserted / deleted tables so the need to check wouldn't matter and you wouldnt need the rollback, as something as been inserted or updated.