Aracılığıyla paylaş


DEĞIŞEN DIZİSİ (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

Var olan bir dizi nesnesinin bağımsız değişkenlerini değiştirir. Dizi seçeneğiyle CACHE oluşturulduysa, sıranın değiştirilmesi önbelleği yeniden oluşturur.

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. Veri türü deyimi kullanılarak ALTER SEQUENCE 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. İşlev çağrılarak NEXT VALUE FOR bir diziden yeni değerler oluşturulur. Aynı anda birden çok sıra numarası almak için kullanın sp_sequence_get_range . Hem , CREATE SEQUENCEhem de sp_sequence_get_rangeişlevini kullanan bilgi ve NEXT VALUE FOR senaryolar için bkz. Sıra Numaraları.

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ülen sonraki değer. Sağlanırsa, RESTART WITH değer en büyük değerden küçük veya buna eşit ve sıra nesnesinin minimum değerinden büyük veya buna eşit bir tamsayı olmalıdır. WITH Değer atlanırsa, sıra numaralandırması özgün CREATE SEQUENCE seçeneklere göre yeniden başlatılır.

<sabit> GÖRE ARTıRMA

İşleve yapılan her çağrı için sıra nesnesinin temel değerini artırmak (veya negatifse azaltma) için NEXT VALUE FOR kullanılan değer. Artış negatif bir değerse, sıralı nesne azalandır, aksi takdirde artandır. Artış 0 olamaz.

[ MINVALUE <sabit> | MINVALUE YOK ]

Sıralı nesnenin sınırlarını belirtir. belirtilirse NO MINVALUE , dizi veri türünün mümkün olan en düşük değeri kullanılır.

[ MAXVALUE <sabiti> | NO MAXVALUE ]

Sıralı nesnenin sınırlarını belirtir. belirtilirse NO MAXVALUE , dizi veri türünün mümkün olan 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ılıp başlatılmayacağını veya en düşük veya en yüksek değeri aşıldığında bir özel durum oluşturup oluşturmayacağını belirtir.

Not

Döngüden sonra bir sonraki değer, dizinin değil START VALUE 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.

Açıklamalar

Dizilerin nasıl oluşturulduğu ve sıra önbelleğinin nasıl yönetildiğini öğrenmek için bkz. CREATE SEQUENCE.

MINVALUE Artan diziler için ve MAXVALUE azalan diziler için değeri, sıranın değerine izin START WITH vermeyen bir değerle değiştirilemez. Artan sıranın değerini değerinden MINVALUE büyük bir sayıya değiştirmek veya azalan bir sıranın değerinin daha küçük START WITH bir sayıyla değiştirilmesi MAXVALUE için, en düşük ve en büyük aralığın içinde kalan istenen bir noktada sırayı yeniden başlatmak için bağımsız değişkenini ekleyinSTART WITH.RESTART WITH

Meta veriler

Diziler hakkında bilgi içinsys.sequences sorgusunu kullanın.

İzinler

ALTER Dizi veya ALTER şema üzerinde izin gerektirir. Dizi üzerinde izin vermek ALTER için aşağıdaki biçimde kullanın ALTER ON OBJECT :

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

Bir dizi nesnesinin sahipliği deyimi kullanılarak ALTER AUTHORIZATION aktarılabilir.

Denetim

denetlemek ALTER SEQUENCEiçin, öğesini SCHEMA_OBJECT_CHANGE_GROUPizleyin.

Örnekler

Hem dizi oluşturma hem de dizi numaraları oluşturmak için işlevini kullanma NEXT VALUE FOR ö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ü yapmadığından, NEXT VALUE FOR sıra 200'ü aştığında işlev hatayla sonuçlanır.

B. Bir diziyi yeniden başlatma

Aşağıdaki örnek adlı CountBy1bir 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 START WITH oluştururken 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 9.223.372.036.854.775.807 sayısı oluşturulduktan sonra çalışmayı durduracak şekilde dizisi varsayılan değeri NO CYCLE 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.