ALTER SEQUENCE (Transact-SQL)
Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği
Var olan bir dizi nesnesinin bağımsız değişkenlerini değiştirir. Dizi CACHE seçeneğiyle oluşturulduysa, dizi değiştirildiği zaman önbellek yeniden oluşturulur.
Sıralar nesneleri CREATE SEQUENCE deyimi kullanılarak oluşturulur. Sıralar tamsayı değerleridir ve tamsayı döndüren herhangi bir veri türünde olabilir. ALTER SEQUENCE deyimi kullanılarak veri türü değiştirilemez. Veri türünü değiştirmek için dizi nesnesini bırakın ve oluşturun.
Sıra, belirtime göre sayısal değerler dizisi oluşturan kullanıcı tanımlı şema bağlı nesnesidir. Yeni değerler, NEXT VALUE FOR işlevi çağrılarak bir diziden oluşturulur. Aynı anda birden çok sıra numarası almak için sp_sequence_get_range kullanın. Hem CREATE SEQUENCE, sp_sequence_get_rangehem de NEXT VALUE FOR işlevini kullanan bilgi ve senaryolar için bkz. Sıralı Sayılar.
Transact-SQL söz dizimi kuralları
Sözdizimi
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 } ]
[ ; ]
Bağımsız değişken
sequence_name
Dizinin veritabanında bilindiği benzersiz adı belirtir. türü sysname
RESTART [ <sabit> ]
Sıra nesnesi tarafından döndürülecek bir sonraki değer. Sağlanırsa, WITH YENIDEN BAŞLAT değeri, en büyük değere eşit veya ondan küçük ve dizi nesnesinin en küçük değerinden büyük veya buna eşit bir tamsayı olmalıdır. WITH değeri atlanırsa, sıra numaralandırması özgün CREATE SEQUENCE seçeneklerine göre yeniden başlatılır.
<sabit> GÖRE ARTıRMA
SONRAKI DEĞER FOR işlevine yapılan her çağrı için sıra nesnesinin temel değerini artırmak (veya negatifse azaltmak) için kullanılan değer. Artış negatif bir değerse, dizi nesnesi azalandır, aksi takdirde artandır. Artış 0 olamaz.
[ MINVALUE <sabit> | MINVALUE YOK ]
Sıralı nesnenin sınırlarını belirtir. NO MINVALUE belirtilirse, dizi veri türünün olası en düşük değeri kullanılır.
[ MAXVALUE <sabit> | MAXVALUE YOK
Sıralı nesnenin sınırlarını belirtir. NO MAXVALUE belirtilirse, dizi veri türünün olası en büyük değeri kullanılır.
[ DÖNGÜ | DÖNGÜ YOK ]
Bu özellik, sıra nesnesinin en düşük değerden (veya azalan sıra nesneleri için en yüksek değerden) yeniden başlatılmasını veya en düşük veya en büyük değeri aşıldığında bir özel durum oluşturup oluşturmayacağını belirtir.
Not
Döngüden sonra bir sonraki değer, dizinin START DEĞERİ değil en düşük veya en yüksek değerdir.
[ CACHE [<sabit> ] | ÖNBELLEK YOK ]
Sistem tablolarında oluşturulan değerleri kalıcı hale getirmek için gereken IOS sayısını en aza indirerek sıralı nesneleri kullanan uygulamaların performansını artırır.
Önbelleğin davranışı hakkında daha fazla bilgi için bkz. create SEQUENCE (Transact-SQL)
Açıklamalar
Sıraların nasıl oluşturulduğu ve sıra önbelleğinin nasıl yönetildiğini öğrenmek için bkz. CREATE SEQUENCE (Transact-SQL).
Artan diziler için MINVALUE ve azalan sıralar için MAXVALUE, dizinin START WITH değerine izin vermeyen bir değerle değiştirilemez. Artan bir dizinin MINVALUE değerini START WITH değerinden daha büyük bir sayıya değiştirmek veya azalan bir dizinin MAXVALUE değerini START WITH değerinden daha küçük bir sayıyla değiştirmek için, en düşük ve en yüksek aralığın içinde kalan istenen bir noktada diziyi yeniden başlatmak için RESTART WITH bağımsız değişkenini ekleyin.
Meta veriler
Diziler hakkında bilgi için
Güvenlik
İzinler
Sıra üzerinde alter izni
GRANT ALTER ON OBJECT::Test.TinySeq TO [AdventureWorks\Larry]
Sıralı nesnenin sahipliği, ALTER AUTHORIZATION deyimi kullanılarak aktarılabilir.
Denetim
ALTER SEQUENCE
Örnekler
Hem sıra oluşturma hem de sıra numaraları oluşturmak üzere işlevinin
A. Sırayı değiştirme
Aşağıdaki örnek, 100 ile 200 arasında bir aralığa sahip int veri türünü kullanarak Test adlı bir şema ve TestSeq adlı bir dizi oluşturur. Sıra 125 ile başlar ve bir sayı her oluşturulduğunda 25 artar. Sıra döngüye göre yapılandırıldığından, değer en fazla 200 değerini aştığında, sıra en az 100 değerinde yeniden başlatılır.
CREATE SCHEMA Test ;
GO
CREATE SEQUENCE Test.TestSeq
AS int
START WITH 125
INCREMENT BY 25
MINVALUE 100
MAXVALUE 200
CYCLE
CACHE 3
;
GO
Aşağıdaki örnek, TestSeq dizisini 50 ile 200 arasında bir aralığa sahip olacak şekilde değiştirir. Sıra, numaralandırma serisini 100 ile yeniden başlatır ve bir sayı oluşturulduğunda 50 artırır.
ALTER SEQUENCE Test. TestSeq
RESTART WITH 100
INCREMENT BY 50
MINVALUE 50
MAXVALUE 200
NO CYCLE
NO CACHE
;
GO
Dizi döngüye girmeyecek olduğundan, işlevi için
B. Sırayı yeniden başlatma
Aşağıdaki örnek CountBy1 adlı bir dizi oluşturur. Dizi varsayılan değerleri kullanır.
CREATE SEQUENCE Test.CountBy1 ;
Bir dizi değeri oluşturmak için sahip aşağıdaki deyimi yürütür:
SELECT NEXT VALUE FOR Test.CountBy1
-9.223.372.036.854.775.808 değeri, bigint veri türü için mümkün olan en düşük değerdir. Sahip, dizinin 1 ile başlamasını istediğini fark eder, ancak diziyi oluştururken START WITH yan tümcesini belirtmez. Bu hatayı düzeltmek için sahip aşağıdaki deyimi yürütür.
ALTER SEQUENCE Test.CountBy1 RESTART WITH 1 ;
Ardından sahip, bir sıra numarası oluşturmak için aşağıdaki deyimi yeniden yürütür.
SELECT NEXT VALUE FOR Test.CountBy1;
Sayı şu anda beklendiği gibi 1'dir.
CountBy1 dizisi, 9.223.372.036.854.775.807 sayısı oluşturulduktan sonra çalışmayı durduracağı için NO CYCLE varsayılan değeri kullanılarak oluşturulmuştur. Sıra nesnesine yapılan sonraki çağrılar 11728 hatasını döndürür. Aşağıdaki deyim, sıra nesnesini döngüye dönüştürür ve 20'lik bir önbellek ayarlar.
ALTER SEQUENCE Test.CountBy1
CYCLE
CACHE 20 ;
Artık sıra nesnesi 9.223.372.036.854.775.807'ye ulaştığında döngü yapılır ve döngüden sonraki sonraki sayı en düşük veri türü olan -9.223.372.036.854.775.808 olacaktır.
Sahip, bigint veri türünün her kullanıldığında 8 bayt kullandığını fark etti. 4 bayt kullanan int veri türü yeterlidir. Ancak bir sıralı nesnenin veri türü değiştirilemez. int veri türüne geçmek için, sahibin sıralı nesneyi bırakması ve nesneyi doğru veri türüyle yeniden oluşturması gerekir.
Ayrıca Bkz.
CREATE SEQUENCE (Transact-SQL)
DROP SEQUENCE (Transact-SQL)
NEXT VALUE FOR (Transact-SQL)
sıra numaralarını
sp_sequence_get_range (Transact-SQL)