Bagikan melalui


UBAH URUTAN (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceDatabase SQL di Microsoft Fabric

Memodifikasi argumen objek urutan yang ada. Jika urutan dibuat dengan CACHE opsi , mengubah urutan 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 ALTER SEQUENCE pernyataan . 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 NEXT VALUE FOR fungsi . Gunakan sp_sequence_get_range untuk mendapatkan beberapa nomor urutan sekaligus. Untuk informasi dan skenario yang menggunakan CREATE SEQUENCE, , sp_sequence_get_rangedan NEXT VALUE FOR fungsi , lihat Nomor Urutan.

Konvensi sintaks transact-SQL

Sintaks

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 } ]
[ ; ]

Argumen

sequence_name

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

HIDUPKAN ULANG [ DENGAN <konstanta> ]

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

INCREMENT BY <konstanta>

Nilai yang digunakan untuk menaikkan (atau penurunan jika negatif) nilai dasar objek urutan untuk setiap panggilan ke NEXT VALUE FOR fungsi. 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 NO MINVALUE ditentukan, nilai minimum yang mungkin dari jenis data urutan digunakan.

[ Konstanta< MAXVALUE >| TIDAK ADA MAXVALUE ]

Menentukan batas untuk objek urutan. Jika NO MAXVALUE 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 START VALUE urutannya.

[ 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 MEMBUAT URUTAN.

Keterangan

Untuk informasi tentang bagaimana urutan dibuat dan bagaimana cache urutan dikelola, lihat MEMBUAT URUTAN.

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

Metadata

Untuk informasi tentang urutan, kueri sys.sequences.

Izin

ALTER Memerlukan izin pada urutan atau ALTER izin pada skema. Untuk memberikan ALTER izin 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 ALTER AUTHORIZATION pernyataan .

Audit

Untuk mengaudit ALTER SEQUENCE, pantau SCHEMA_OBJECT_CHANGE_GROUP.

Contoh

Untuk contoh pembuatan urutan dan penggunaan NEXT VALUE FOR fungsi 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 urutannya tidak bersepeda, NEXT VALUE FOR fungsi menghasilkan kesalahan ketika urutannya melebihi 200.

B. Menghidupkan 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 mereka ingin urutan dimulai dengan 1, tetapi tidak menunjukkan START WITH klausul ketika mereka 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.

CountBy1 Urutan dibuat menggunakan nilai NO CYCLE default sehingga akan berhenti beroperasi setelah menghasilkan angka 9.223.372.036.854.775.807. Panggilan berikutnya ke objek urutan 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.