Q:

SQL Server - current user name

Which one should I use to record update made by users?

SYSTEM_USER, or
ORIGINAL_LOGIN(), or
SUSER_SNAME()

A:

SYSTEM_USER returns the current executing context, so this can return an impersonated context
ORIGINAL_LOGIN() returns the identity of the user that initially connected to the instance, so regardless whether the context is impersonated or not it will yield the original user that logged in, good for auditing.
SUSER_SNAME() this is used if you want to get the username by SID so SUSER_SNAME can be invoked with a parameter like such SUSER_SNAME([server_user_sid]) but the SID is optional if you don’t pass that parameter the  current user is returned.

