SYSTEM_USER (Transact-SQL)
Permite que um valor fornecido pelo sistema para o logon atual seja inserido em uma tabela quando nenhum valor padrão é especificado.
Convenções de sintaxe Transact-SQL
Sintaxe
SYSTEM_USER
Tipos de retorno
nchar
Comentários
É possível usar a função SYSTEM_USER com restrições DEFAULT nas instruções CREATE TABLE e ALTER TABLE. Ela também pode ser usada como qualquer função padrão.
Se o nome de usuário e o nome de logon forem diferentes, SYSTEM_USER retornará o nome de logon.
Se o usuário atual tiver feito logon no SQL Server usando a Autenticação do Windows, SYSTEM_USER retornará o nome de identificação de logon do Windows no formato: DOMAIN\user_login_name. Entretanto, se o usuário atual tiver feito logon no SQL Server usando a Autenticação do SQL Server, SYSTEM_USER retornará o nome de identificação de logon do SQL Server, como WillisJo para um usuário conectado como WillisJo.
SYSTEM_USER retorna o nome do contexto em execução no momento. Se a instrução EXECUTE AS tiver sido usada para alternar o contexto, SYSTEM_USER retornará o nome do contexto representado.
Exemplos
A.Usando SYSTEM_USER para retornar o nome de usuário do sistema atual
O exemplo a seguir declara uma variável char, armazena o valor atual SYSTEM_USER na variável e imprime o valor armazenado na variável.
DECLARE @sys_usr char(30);
SET @sys_usr = SYSTEM_USER;
SELECT 'The current system user is: '+ @sys_usr;
GO
Aqui está o conjunto de resultados.
----------------------------------------------------------
The current system user is: WillisJo
(1 row(s) affected)
B.Usando SYSTEM_USER com restrições DEFAULT
O exemplo a seguir cria uma tabela com a restrição SYSTEM_USER como uma restrição DEFAULT para a coluna SRep_tracking_user.
USE AdventureWorks2012;
GO
CREATE TABLE Sales.Sales_Tracking
(
Territory_id int IDENTITY(2000, 1) NOT NULL,
Rep_id int NOT NULL,
Last_sale datetime NOT NULL DEFAULT GETDATE(),
SRep_tracking_user varchar(30) NOT NULL DEFAULT SYSTEM_USER
);
GO
INSERT Sales.Sales_Tracking (Rep_id)
VALUES (151);
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)
VALUES (293, '19980515');
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)
VALUES (27882, '19980620');
INSERT Sales.Sales_Tracking (Rep_id)
VALUES (21392);
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)
VALUES (24283, '19981130');
GO
A consulta a seguir seleciona todas a informações da tabela Sales_Tracking:
SELECT * FROM Sales_Tracking ORDER BY Rep_id;
GO
Aqui está o conjunto de resultados.
Territory_id Rep_id Last_sale SRep_tracking_user
----------- ------ -------------------- ------------------
2000 151 Mar 4 1998 10:36AM ArvinDak
2001 293 May 15 1998 12:00AM ArvinDak
2003 21392 Mar 4 1998 10:36AM ArvinDak
2004 24283 Nov 3 1998 12:00AM ArvinDak
2002 27882 Jun 20 1998 12:00AM ArvinDak
(5 row(s) affected)
Consulte também
Referência
CURRENT_TIMESTAMP (Transact-SQL)