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

Apakah Pesanan Dijamin Saat Memasukkan Beberapa Baris dengan Identitas?

pertanyaan ditanyakan sebelumnya.

Anda dapat menentukan ORDER BY di INSERT .

Jika Anda melakukannya, urutan IDENTITY nilai yang dihasilkan dijamin cocok dengan ORDER BY yang ditentukan di INSERT .

Menggunakan contoh Anda:

DECLARE @blah TABLE
(
    ID INT IDENTITY(1, 1) NOT NULL,
    Name VARCHAR(100) NOT NULL
);

INSERT INTO @blah (Name)
SELECT T.Name
FROM
    (
        VALUES
        ('Timmy'),
        ('Jonny'),
        ('Sally')
    ) AS T(Name)
ORDER BY T.Name;

SELECT
    T.ID
    ,T.Name
FROM @blah AS T
ORDER BY T.ID;

Hasilnya adalah:

+----+-------+
| ID | Name  |
+----+-------+
|  1 | Jonny |
|  2 | Sally |
|  3 | Timmy |
+----+-------+

Yaitu, Name telah diurutkan dan ID telah dibuat menurut urutan ini. Dijamin Jonny akan memiliki ID terendah, Timmy akan memiliki ID tertinggi, Sally akan memiliki ID di antara mereka. Mungkin ada kesenjangan antara nilai ID yang dihasilkan, tetapi urutan relatifnya dijamin.

Jika Anda tidak menentukan ORDER BY di INSERT , lalu menghasilkan IDENTITY ID dapat dibuat dalam urutan yang berbeda.

Ingat, tidak ada jaminan untuk urutan fisik sebenarnya dari baris dalam tabel bahkan dengan ORDER BY di INSERT , satu-satunya jaminan adalah ID yang dihasilkan.

Dalam sebuah pertanyaan INSERT INTO as SELECT dengan ORDER BY Umachandar Jayachandran dari MS berkata:

Dan dia memberikan tautan ke Pemesanan jaminan di SQL Server , di mana Conor Cunningham dari Tim Mesin SQL Server mengatakan:

Ada tautan ke artikel basis pengetahuan MS di komentar di pos itu:Perilaku fungsi IDENTITY ketika digunakan dengan SELECT INTO atau INSERT .. SELECT query yang berisi klausa ORDER BY , yang menjelaskan lebih detail. Dikatakan:

Saya akan menganggap artikel KB ini sebagai dokumentasi resmi dan menganggap perilaku ini dijamin.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggulung beberapa baris dalam satu baris

  2. String koneksi SQL Server Asynchronous Processing=true

  3. Apa pro dan kontra dari OleDB versus SQLClient?

  4. Log Transaksi SQL Server, Bagian 3:Dasar-dasar Pencatatan

  5. Bagaimana cara menambahkan kolom nomor urut ke dalam data hasil?