ALTER SEQUENCE (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Memodifikasi argumen objek urutan yang ada. Jika urutan dibuat dengan opsi CACHE , mengubah urutan akan membuat ulang cache.

Urutan objek dibuat dengan menggunakan pernyataan CREATE SEQUENCE . Urutan adalah nilai bilangan bulat dan bisa dari jenis data apa pun yang mengembalikan bilangan bulat. Jenis data tidak dapat diubah dengan menggunakan pernyataan ALTER SEQUENCE. Untuk mengubah jenis data, letakkan dan buat objek urutan.

Urutan adalah objek terikat skema yang ditentukan pengguna yang menghasilkan urutan nilai numerik sesuai dengan spesifikasi. Nilai baru dihasilkan dari urutan dengan memanggil fungsi NEXT VALUE FOR. Gunakan sp_sequence_get_range untuk mendapatkan beberapa nomor urut sekaligus. Untuk informasi dan skenario yang menggunakan CREATE SEQUENCE, sp_sequence_get_range, dan fungsi NEXT VALUE FOR, lihat Nomor Urutan.

Konvensi sintaks transact-SQL

Sintaksis

ALTER SEQUENCE [schema_name. ] sequence_name  
    [ RESTART [ WITH <constant> ] ]  
    [ INCREMENT BY <constant> ]  
    [ { MINVALUE <constant> } | { NO MINVALUE } ]  
    [ { MAXVALUE <constant> } | { NO MAXVALUE } ]  
    [ CYCLE | { NO CYCLE } ]  
    [ { CACHE [ <constant> ] } | { NO CACHE } ]  
    [ ; ]  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

sequence_name
Menentukan nama unik yang urutannya diketahui dalam database. Jenisnya adalah sysname.

HIDUPKAN ULANG [ DENGAN <konstanta> ]
Nilai berikutnya yang akan dikembalikan oleh objek urutan. Jika disediakan, nilai RESTART WITH harus berupa bilangan bulat yang kurang dari atau sama dengan maksimum dan lebih besar dari atau sama dengan nilai minimum objek urutan. Jika nilai WITH dihilangkan, penomoran urutan dimulai ulang berdasarkan opsi CREATE SEQUENCE asli.

INCREMENT BY <konstanta>
Nilai yang digunakan untuk menaikkan (atau penurunan jika negatif) nilai dasar objek urutan untuk setiap panggilan ke fungsi NEXT VALUE FOR. Jika kenaikan adalah nilai negatif, objek urutan turun, jika tidak, maka akan naik. Kenaikan tidak boleh 0.

[ KONSTANTA> MINVALUE <| TIDAK ADA MINVALUE ]
Menentukan batas untuk objek urutan. Jika TIDAK ADA MINVALUE ditentukan, nilai minimum yang mungkin dari jenis data urutan digunakan.

[ Konstanta> MAXVALUE <| TIDAK ADA MAXVALUE
Menentukan batas untuk objek urutan. Jika TIDAK ADA MAXVALUE yang ditentukan, nilai maksimum yang mungkin dari jenis data urutan digunakan.

[ SIKLUS | TIDAK ADA SIKLUS ]
Properti ini menentukan apakah objek urutan harus dimulai ulang dari nilai minimum (atau maksimum untuk objek urutan menurun) atau melempar pengecualian ketika nilai minimum atau maksimumnya terlampaui.

Catatan

Setelah bersepeda, nilai berikutnya adalah nilai minimum atau maksimum, bukan NILAI AWAL urutan.

[ CACHE [<konstan> ] | TIDAK ADA CACHE ]
Meningkatkan performa untuk aplikasi yang menggunakan objek urutan dengan meminimalkan jumlah IO yang diperlukan untuk mempertahankan nilai yang dihasilkan ke tabel sistem.

Untuk informasi selengkapnya tentang perilaku cache, lihat CREATE SEQUENCE (Transact-SQL).

Keterangan

Untuk informasi tentang bagaimana urutan dibuat dan bagaimana cache urutan dikelola, lihat CREATE SEQUENCE (Transact-SQL).

MINVALUE untuk urutan naik dan MAXVALUE untuk urutan turun tidak dapat diubah ke nilai yang tidak mengizinkan nilai START WITH dari urutan. Untuk mengubah MINVALUE urutan naik ke angka yang lebih besar dari nilai START WITH atau untuk mengubah MAXVALUE urutan menurun ke angka yang lebih kecil dari nilai START WITH, sertakan argumen RESTART WITH untuk memulai ulang urutan pada titik yang diinginkan yang berada dalam rentang minimum dan maksimum.

Metadata

Untuk informasi tentang urutan, kueri sys.sequences.

Keamanan

Izin

Memerlukan izin UBAH pada urutan atau izin UBAH pada skema. Untuk memberikan izin ALTER pada urutan, gunakan ALTER ON OBJECT dalam format berikut:

GRANT ALTER ON OBJECT::Test.TinySeq TO [AdventureWorks\Larry]  

Kepemilikan objek urutan dapat ditransfer dengan menggunakan pernyataan ALTER AUTHORIZATION .

Audit

Untuk mengaudit ALTER SEQUENCE, pantau SCHEMA_OBJECT_CHANGE_GROUP.

Contoh

Untuk contoh pembuatan urutan dan menggunakan fungsi NEXT VALUE FOR untuk menghasilkan nomor urut, lihat Nomor Urutan.

J. Mengubah urutan

Contoh berikut membuat skema bernama Test dan urutan bernama TestSeq menggunakan jenis data int , memiliki rentang dari 100 hingga 200. Urutan dimulai dengan 125 dan kenaikan sebesar 25 setiap kali angka dihasilkan. Karena urutan dikonfigurasi untuk siklus, ketika nilai melebihi nilai maksimum 200, urutan dimulai ulang pada nilai minimum 100.

CREATE SCHEMA Test ;  
GO  
  
CREATE SEQUENCE Test.TestSeq  
    AS int   
    START WITH 125  
    INCREMENT BY 25  
    MINVALUE 100  
    MAXVALUE 200  
    CYCLE  
    CACHE 3  
;  
GO  

Contoh berikut mengubah urutan TestSeq untuk memiliki rentang dari 50 hingga 200. Urutan memulai ulang seri penomoran dengan 100 dan kenaikan sebesar 50 setiap kali angka dihasilkan.

ALTER SEQUENCE Test. TestSeq  
    RESTART WITH 100  
    INCREMENT BY 50  
    MINVALUE 50  
    MAXVALUE 200  
    NO CYCLE  
    NO CACHE  
;  
GO  

Karena urutan tidak akan berputar, fungsi NEXT VALUE FOR akan mengakibatkan kesalahan ketika urutan melebihi 200.

B. Memulai ulang urutan

Contoh berikut membuat urutan bernama CountBy1. Urutan menggunakan nilai default.

CREATE SEQUENCE Test.CountBy1 ;  

Untuk menghasilkan nilai urutan, pemilik kemudian menjalankan pernyataan berikut:

SELECT NEXT VALUE FOR Test.CountBy1  

Nilai yang dikembalikan sebesar -9.223.372.036.854.775.808 adalah nilai serendah mungkin untuk jenis data bigint . Pemilik menyadari bahwa dia ingin urutan dimulai dengan 1, tetapi tidak menunjukkan klausul START WITH ketika dia membuat urutan. Untuk memperbaiki kesalahan ini, pemilik menjalankan pernyataan berikut.

ALTER SEQUENCE Test.CountBy1 RESTART WITH 1 ;  

Kemudian pemilik menjalankan pernyataan berikut lagi untuk menghasilkan nomor urut.

SELECT NEXT VALUE FOR Test.CountBy1;  

Jumlahnya sekarang 1, seperti yang diharapkan.

Urutan CountBy1 dibuat menggunakan nilai default NO CYCLE sehingga akan berhenti beroperasi setelah menghasilkan angka 9.223.372.036.854.775.807. Panggilan berikutnya ke objek urutan akan mengembalikan kesalahan 11728. Pernyataan berikut mengubah objek urutan menjadi siklus dan mengatur cache 20.

ALTER SEQUENCE Test.CountBy1  
    CYCLE  
    CACHE 20 ; 

Sekarang ketika objek urutan mencapai 9.223.372.036.854.775.807 akan berputar, dan angka berikutnya setelah bersepeda akan menjadi minimum jenis data, -9.223.372.036.854.775.808.

Pemilik menyadari bahwa jenis data bigint menggunakan 8 byte setiap kali digunakan. Jenis data int yang menggunakan 4 byte sudah cukup. Namun jenis data objek urutan tidak dapat diubah. Untuk mengubah ke jenis data int , pemilik harus menghilangkan objek urutan dan membuat ulang objek dengan jenis data yang benar.

Lihat Juga

CREATE SEQUENCE (Transact-SQL)
DROP SEQUENCE (Transact-SQL)
NILAI BERIKUTNYA UNTUK (Transact-SQL)
Nomor Urut
sp_sequence_get_range (T-SQL)