Aracılığıyla paylaş


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çinsys.sequences sorgusunu kullanın.

Güvenlik

İzinler

Sıra üzerinde alter izni veya şema üzerinde ALTER izni gerektirir. Sıra üzerinde ALTER izni vermek için, NESNEDE ALTER aşağıdaki biçimde kullanın:

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

Sıralı nesnenin sahipliği, ALTER AUTHORIZATION deyimi kullanılarak aktarılabilir.

Denetim

ALTER SEQUENCEdenetlemek için SCHEMA_OBJECT_CHANGE_GROUPizleyin.

Örnekler

Hem sıra oluşturma hem de sıra numaraları oluşturmak üzere işlevinin NEXT DEĞERINI kullanma örnekleri için bkz. sıra numaraları.

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 NEXT DEĞERI, sıra 200'ü aştığında hataya neden olur.

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)