Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Gunakan NEWID() untuk Membuat Nilai Unik di SQL Server

Di SQL Server, Anda dapat menggunakan NEWID() berfungsi untuk menciptakan nilai unik.

Lebih khusus lagi, ini adalah fungsi yang sesuai dengan RFC4122 yang membuat nilai unik dari jenis pengidentifikasi unik .

Nilai yang NEWID() menghasilkan adalah GUID 16-byte yang dihasilkan secara acak (Pengidentifikasi Unik Global). Ini juga dikenal sebagai UUID (Pengidentifikasi Unik Universal).

Contoh 1 – Pernyataan SELECT Dasar

Berikut SELECT quick cepat pernyataan yang mengembalikan NEWID() :

SELECT NEWID() AS Result;

Hasil:

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

RFC4122 mencakup 5 versi (atau sub-tipe). Saya dapat mengatakan bahwa contoh ini menggunakan RFC4122 versi 4, karena 4 di tempat yang relevan. Versi 4 menetapkan bahwa GUID dibuat secara acak atau pseudo-acak. Versi lain menggunakan metode lain untuk menghasilkan GUID.

Saat Anda melihat semua contoh di halaman ini, Anda akan melihat bahwa semuanya unik, tetapi semuanya berbentuk: xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx , yang berarti semuanya adalah GUID versi 4, dan oleh karena itu semuanya dibuat secara acak atau pseudo-acak.

Contoh 2 – Menggunakan NEWID() dengan Variabel

Berikut contoh penempatan nilai NEWID() menjadi variabel, lalu memilihnya.

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

Hasil:

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

Contoh 3 – Konversi ke String

Berikut ini contoh mengonversi nilai variabel menjadi string, lalu mencetaknya.

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

Hasil:

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

Contoh 4 – Sebagai Nilai DEFAULT dalam Database

Berikut ini contoh penggunaan NEWID() sebagai nilai default dalam kolom database.

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;

Hasil:

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

Dalam contoh ini, saya membuat tabel yang menyertakan pengidentifikasi unik kolom dengan nilai default yang dihasilkan oleh NEWID() . Saya kemudian memasukkan data ke dalam tabel itu. Ketika saya melakukan ini, saya tidak menentukan CustomerId nilai, sehingga menggunakan nilai default (yang dihasilkan oleh NEWID() ). Terakhir, saya memilih isi tabel, yang menunjukkan penggunaan GUID yang dihasilkan dengan setiap sisipan baris.

Contoh 5 – Ditentukan Secara Eksplisit dalam Pernyataan INSERT

Anda juga dapat secara eksplisit menggunakan NEWID() saat memasukkan data.

Seperti ini:

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

SELECT * FROM Customer;

Hasil:

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

Disini saya menggunakan NEWID() untuk menghasilkan ID unik untuk setiap baris, dan oleh karena itu nilai default tidak digunakan. Either way, keduanya dihasilkan oleh NEWID() jadi kami secara efektif mendapatkan hasil yang sama – GUID yang dibuat secara acak.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengembalikan Daftar Fungsi Partisi di SQL Server (T-SQL)

  2. Nama kolom atau jumlah nilai yang diberikan tidak sesuai dengan definisi tabel

  3. Peregangan Database di SQL Server 2016 RTM

  4. Fungsi IndexOf di T-SQL

  5. SQL Server 2016 :Penyempurnaan OLTP Dalam Memori