Baris dalam tabel adalah tidak berurutan, jadi tidak masuk akal untuk berbicara tentang baris yang berurutan. Dan, hasil yang ditetapkan dari kueri tidak berurutan, kecuali jika Anda menggunakan order by
klausa.
Karena itu, Anda dapat memiliki efek yang sama dengan menempatkan baris ke dalam tabel dengan cara yang teratur. Ini caranya.
select top 0 *
into new_table
from existing_table;
alter table new_table add new_table_id int identity(1, 1);
insert into new_table(<list of columns without new_table_id>)
SELECT <list of columns without new_table_id>
INTO new_table
FROM existing_table
ORDER BY col1, col2;
Kolom id dijamin dalam urutan yang benar. Dalam praktiknya, tampaknya baris akan dimasukkan secara berurutan. Sebenarnya, urutan penyisipan tidak dijamin meskipun nilai id diurutkan dengan benar.
Seperti yang disebutkan dalam komentar, Anda juga dapat melakukan:
alter table new_table add new_table_id int identity(1, 1) not null primary key;
Anda dapat melakukan ini karena tabel kosong. Sebagai kunci utama, data harus dimasukkan secara berurutan.
Sebagai catatan, meskipun. Kueri:
select *
from new_table;
tidak menjamin urutan hasil. Tidak ada bedanya apa urutan penyisipan ke dalam tabel. Anda tidak dapat bergantung pada hasil yang berada dalam urutan tertentu hanya karena baris diurutkan seperti itu. Misalnya, dalam lingkungan multi-utas, hasil umumnya tidak teratur, baik secara teori maupun praktik.