Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Użyj NEWID(), aby utworzyć unikalną wartość w SQL Server

W SQL Server możesz użyć NEWID() funkcja, aby stworzyć unikalną wartość.

Mówiąc dokładniej, jest to funkcja zgodna z RFC4122, która tworzy unikalną wartość typu uniqueidentifier .

Wartość, którą NEWID() produce to losowo generowany 16-bajtowy identyfikator GUID (Globally Unique IDentifier). Jest to również znane jako UUID (Universally Unique IDentifier).

Przykład 1 – Podstawowa instrukcja SELECT

Oto szybki SELECT instrukcja zwracająca NEWID() :

SELECT NEWID() AS Result;

Wynik:

+--------------------------------------+
| Result                               |
|--------------------------------------|
| ab1b299b-9781-48d9-bedc-f238f6f5cc57 |
+--------------------------------------+

RFC4122 zawiera 5 wersji (lub podtypów). Mogę powiedzieć, że ten przykład używa RFC4122 w wersji 4, ze względu na 4 w odpowiednim miejscu. Wersja 4 określa, że ​​identyfikator GUID jest generowany losowo lub pseudolosowo. Inne wersje wykorzystują inne metody generowania identyfikatora GUID.

Gdy spojrzysz na wszystkie przykłady na tej stronie, zauważysz, że wszystkie są niepowtarzalne, ale wszystkie mają postać: xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx , co oznacza, że ​​wszystkie są identyfikatorami GUID w wersji 4, a zatem wszystkie są generowane losowo lub pseudolosowo.

Przykład 2 – Używanie NEWID() ze zmienną

Oto przykład umieszczenia wartości NEWID() do zmiennej, a następnie wybierając ją.

DECLARE @myguid uniqueidentifier = NEWID();
SELECT @myguid AS Result;

Wynik:

+--------------------------------------+
| Result                               |
|--------------------------------------|
| b6cfb25a-3f81-4e5a-a304-a4b44fb5dbeb |
+--------------------------------------+

Przykład 3 – Konwersja na ciąg

Oto przykład konwersji wartości zmiennej na ciąg, a następnie jej wydrukowania.

DECLARE @myguid uniqueidentifier = NEWID();
PRINT 'Value: '+ CONVERT(varchar(255), @myguid);

Wynik:

Value: 9A229A64-6FE0-417E-B07D-78444EA7DA5B

Przykład 4 – jako wartość domyślna w bazie danych

Oto przykład użycia NEWID() jako wartość domyślną w kolumnie bazy danych.

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;

Wynik:

+--------------------------------------+----------------------+
| CustomerId                           | CustomerName         |
|--------------------------------------+----------------------|
| 6f7f606f-9ed3-48f3-b70e-90d901591203 | Peter Griffin        |
| 79b470df-a317-4359-92af-35cd6394eb5d | Marge Simpson        |
| ed59b667-4cd4-4849-b697-ec2410d7b7ff | Borat Schwarzenegger |
+--------------------------------------+----------------------+

W tym przykładzie tworzę tabelę zawierającą unikalny identyfikator kolumna z domyślną wartością wygenerowaną przez NEWID() . Następnie wstawiam dane do tej tabeli. Kiedy to robię, nie określam CustomerId wartość, więc używa wartości domyślnej (która jest generowana przez NEWID() ). Na koniec wybieram zawartość tabeli, która pokazuje użycie identyfikatora GUID, który został wygenerowany przy każdym wstawieniu wiersza.

Przykład 5 – wyraźnie określony w oświadczeniu INSERT

Możesz także jawnie użyć NEWID() podczas wstawiania danych.

Tak:

INSERT Customer (CustomerId, CustomerName)
VALUES
    (NEWID(), 'Bart Farnsworth'),
    (NEWID(), 'Bruce Norris');

SELECT * FROM Customer;

Wynik:

+--------------------------------------+----------------------+
| 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         |
+--------------------------------------+----------------------+

Tutaj używam NEWID() aby wygenerować unikalny identyfikator dla każdego wiersza, dlatego wartość domyślna nie jest używana. Tak czy inaczej, oba są generowane przez NEWID() dzięki czemu skutecznie uzyskujemy ten sam wynik – losowo wygenerowany identyfikator GUID.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zaktualizuj zapytanie za pomocą podzapytania w SQL Server

  2. Zresetuj AutoIncrement w SQL Server po usunięciu

  3. Jak zaszyfrować widok w SQL Server

  4. Jak dowiedzieć się, co blokuje moje stoły?

  5. Dołączanie tabel i schematów przy wyświetlaniu kolumn tożsamości w bazie danych SQL Server