No SQL Server, você pode usar o
NEWID()
função para criar um valor único. Mais especificamente, é uma função compatível com RFC4122 que cria um valor exclusivo do tipo identificador exclusivo .
O valor que
NEWID()
produz é um GUID de 16 bytes (Globally Unique IDentifier) gerado aleatoriamente. Isso também é conhecido como UUID (Universalmente Unique IDentifier). Exemplo 1 – Instrução SELECT básica
Aqui está um rápido
SELECT
instrução que retorna NEWID()
:SELECT NEWID() AS Result;
Resultado:
+--------------------------------------+ | Result | |--------------------------------------| | ab1b299b-9781-48d9-bedc-f238f6f5cc57 | +--------------------------------------+
RFC4122 inclui 5 versões (ou subtipos). Posso dizer que este exemplo usa RFC4122 versão 4, por causa do 4 no local relevante. A versão 4 especifica que o GUID é gerado aleatoriamente ou pseudoaleatoriamente. Outras versões usam outros métodos para gerar o GUID.
Ao examinar todos os exemplos nesta página, você notará que todos são únicos, mas todos assumem a forma: xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx , o que significa que todos eles são GUIDs da versão 4 e, portanto, são todos gerados aleatoriamente ou pseudoaleatoriamente.
Exemplo 2 – Usando NEWID() com uma variável
Aqui está um exemplo de como colocar o valor de
NEWID()
em uma variável e, em seguida, selecionando-a. DECLARE @myguid uniqueidentifier = NEWID(); SELECT @myguid AS Result;
Resultado:
+--------------------------------------+ | Result | |--------------------------------------| | b6cfb25a-3f81-4e5a-a304-a4b44fb5dbeb | +--------------------------------------+
Exemplo 3 – Converter em String
Aqui está um exemplo de conversão do valor da variável em uma string e, em seguida, imprimi-lo.
DECLARE @myguid uniqueidentifier = NEWID(); PRINT 'Value: '+ CONVERT(varchar(255), @myguid);
Resultado:
Value: 9A229A64-6FE0-417E-B07D-78444EA7DA5B
Exemplo 4 – Como um valor PADRÃO em um banco de dados
Aqui está um exemplo de uso de
NEWID()
como um valor padrão em uma coluna do banco de dados. USE Test; CREATE TABLE Customer ( CustomerId uniqueidentifier NOT NULL DEFAULT NEWID(), CustomerName varchar(70) NOT NULL, ); INSERT Customer (CustomerName) VALUES ('Peter Griffin'), ('Marge Simpson'), ('Borat Schwarzenegger'); SELECT * FROM Customer;
Resultado:
+--------------------------------------+----------------------+ | CustomerId | CustomerName | |--------------------------------------+----------------------| | 6f7f606f-9ed3-48f3-b70e-90d901591203 | Peter Griffin | | 79b470df-a317-4359-92af-35cd6394eb5d | Marge Simpson | | ed59b667-4cd4-4849-b697-ec2410d7b7ff | Borat Schwarzenegger | +--------------------------------------+----------------------+
Neste exemplo, crio uma tabela que inclui um identificador exclusivo coluna com seu valor padrão gerado por
NEWID()
. Em seguida, insiro dados nessa tabela. Quando faço isso, não especifico o CustomerId
valor, então ele usa o valor padrão (que é gerado por NEWID()
). Por fim, seleciono o conteúdo da tabela, que mostra como usar o GUID que foi gerado com cada inserção de linha. Exemplo 5 – Especificado explicitamente na declaração INSERT
Você também pode usar explicitamente
NEWID()
ao inserir os dados. Assim:
INSERT Customer (CustomerId, CustomerName) VALUES (NEWID(), 'Bart Farnsworth'), (NEWID(), 'Bruce Norris'); SELECT * FROM Customer;
Resultado:
+--------------------------------------+----------------------+ | CustomerId | CustomerName | |--------------------------------------+----------------------| | 6f7f606f-9ed3-48f3-b70e-90d901591203 | Peter Griffin | | 79b470df-a317-4359-92af-35cd6394eb5d | Marge Simpson | | ed59b667-4cd4-4849-b697-ec2410d7b7ff | Borat Schwarzenegger | | a21e9a65-5efd-43ea-bd8b-8040b379617a | Bart Farnsworth | | 5ae0e501-3944-4be0-bf8a-ba964d8d13ed | Bruce Norris | +--------------------------------------+----------------------+
Aqui eu uso
NEWID()
para gerar um ID exclusivo para cada linha e, portanto, o valor padrão não é usado. De qualquer forma, ambos são gerados por NEWID()
assim, efetivamente obtemos o mesmo resultado – um GUID gerado aleatoriamente.