Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Microsoft Fabric'te
DepoMicrosoft Fabric'te SQL veritabanı
Tabloda bir kimlik sütunu oluşturur. Bu özellik ve ALTER TABLE Transact-SQL ifadeleriyle CREATE TABLE birlikte kullanılır.
Note
IDENTITY özelliği, bir sütunun satır kimliği özelliğini kullanıma sunan SQL-DMO Identity özelliğinden farklıdır.
Transact-SQL söz dizimi kuralları
Syntax
Fabric Data Warehouse için Sözdizimi:
IDENTITY
IDENTITY [ (seed , increment) ]
Arguments
seed
Tabloya yüklenen ilk satır için kullanılan değer.
increment
Yüklenen önceki satırın kimlik değerine eklenen artımlı değer.
Hem tohumu hem de artışı veya hiçbirini belirtmeniz gerekir. Hiçbiri belirtilmezse, varsayılan değer (1,1) olur.
Remarks
Kimlik sütunları anahtar değerleri oluşturmak için kullanılabilir.
Bir sütundaki identity özelliği aşağıdaki koşulları garanti eder:
Her yeni değer geçerli tohuma ve artışa göre oluşturulur.
Belirli bir işlem için her yeni değer, tablodaki diğer eşzamanlı işlemlerden farklıdır.
Bir sütundaki kimlik özelliği aşağıdaki koşulları garanti etmez:
Değerin benzersizliği - Benzersizlik bir
PRIMARY KEYveya kısıtlama veyaUNIQUEUNIQUEdizin kullanılarak zorunlu kılınmalıdır.Bir işlem içinde ardışık değerler - Tabloda başka eşzamanlı eklemeler olabileceğinden, birden çok satır ekleme işleminin satırlar için ardışık değerler alması garanti değildir. Değerlerin ardışık olması gerekiyorsa, işlem tabloda özel bir kilit veya yalıtım düzeyini kullanmalıdır
SERIALIZABLE.Sunucu yeniden başlatıldıktan veya diğer hatalardan sonra ardışık değerler - SQL Server performans nedenleriyle kimlik değerlerini önbelleğe alabilir ve veritabanı hatası veya sunucunun yeniden başlatılması sırasında atanan değerlerden bazıları kaybolabilir. Bu, ekleme sırasında kimlik değerinde boşluklara neden olabilir. Boşluklar kabul edilebilir değilse, uygulama anahtar değerleri oluşturmak için kendi mekanizmasını kullanmalıdır. Seçeneğiyle bir sıra oluşturucu kullanmak
NOCACHE, boşlukları hiçbir zaman işlenmeyen işlemlerle sınırlayabilir.Değerlerin yeniden kullanımı - Belirli bir tohuma/artışa sahip belirli bir kimlik özelliği için, kimlik değerleri altyapı tarafından yeniden kullanılmaz. Belirli bir insert deyimi başarısız olursa veya insert deyimi geri alınırsa, tüketilen kimlik değerleri kaybolur ve yeniden oluşturulmaz. Bu, sonraki kimlik değerleri oluşturulduğunda boşluklara neden olabilir.
Bu kısıtlamalar, performansı geliştirmek için ve birçok yaygın durumda kabul edilebilir olduklarından tasarımın bir parçasıdır. Bu kısıtlamalar nedeniyle kimlik değerlerini kullanamıyorsanız, geçerli bir değeri tutan ayrı bir tablo oluşturun ve uygulamanızla tabloya ve numara atamasına erişimi yönetin.
Kimlik sütunu olan bir tablo çoğaltma için yayımlanırsa, kimlik sütunu kullanılan çoğaltma türüne uygun bir şekilde yönetilmelidir. Daha fazla bilgi için bkz . Kimlik Sütunlarını Çoğaltma.
Bellek için iyileştirilmiş tablolarda, tohum ve artış olarak 1, 1ayarlanmalıdır. Tohum veya artış değerinin dışında 1 bir değere ayarlanması şu hatayla sonuçlanır: The use of seed and increment values other than 1 is not supported with memory optimized tables.
Tablo başına yalnızca bir kimlik sütunu oluşturulabilir.
Bir sütunda kimlik özelliği ayarlandıktan sonra kaldırılamaz. Yeni veri türü kimlik özelliğiyle uyumlu olduğu sürece veri türü değiştirilebilir.
Fabric Data Warehouse'da veya (, seedbelirtemezsinizincrement, çünkü bu değerler otomatik olarak yönetilir ve benzersiz tam sayılar sağlanır.
BIGINT IDENTITY bir ifadede CREATE TABLE sütun tanımı için gereken tek şeydir. Daha fazla bilgi için Fabric Data Warehouse'daki IDENTITY bölümüne bakınız.
Uygulama farklılıklarına IDENTITY uyum sağladıktan sonra tabloları Vekilet anahtar sütunlarıyla Fabric Data Warehouse'a taşıyabilirsiniz.
Azure Synapse Analytics, kısıtlamayı veya PRIMARY KEYUNIQUE dizini desteklemezUNIQUE. Daha fazla bilgi için bkz. Synapse SQL havuzunda vekil anahtarlar oluşturmak için KIMLIK kullanma.
- Azure Synapse Analytics'teki özel SQL havuzlarında, kimlik değerleri veri deposunun dağıtık mimarisi nedeniyle artırılmaz. Daha fazla bilgi için bkz. Synapse SQL havuzunda vekil anahtarlar oluşturmak için KIMLIK kullanma.
-
IDENTITY Azure Synapse Analytics'te sunucusuz SQL havuzları tarafından desteklenmez.
Examples
A. CREATE TABLE ile IDENTITY özelliğini kullanma
Aşağıdaki örnek, otomatik olarak artan bir kimlik numarası için özelliğini kullanarak IDENTITY yeni bir tablo oluşturur.
USE AdventureWorks2022;
GO
IF OBJECT_ID('dbo.new_employees', 'U') IS NOT NULL
DROP TABLE new_employees;
GO
CREATE TABLE new_employees (
id_num INT IDENTITY(1, 1),
fname VARCHAR(20),
minit CHAR(1),
lname VARCHAR(30)
);
INSERT new_employees (fname, minit, lname)
VALUES ('Karin', 'F', 'Josephs');
INSERT new_employees (fname, minit, lname)
VALUES ('Pirkko', 'O', 'Koskitalo');
B. Kimlik değerlerinde boşluk bulmak için genel söz dizimi kullanma
Aşağıdaki örnekte, veriler kaldırıldığında kimlik değerlerinde boşluk bulmak için genel söz dizimi gösterilmektedir.
Note
Aşağıdaki Transact-SQL betiğinin ilk bölümü yalnızca çizim için tasarlanmıştır. şu açıklamayla başlayan Transact-SQL betiğini çalıştırabilirsiniz: -- Create the img table.
-- Here is the generic syntax for finding identity value gaps in data.
-- The illustrative example starts here.
SET IDENTITY_INSERT tablename ON;
DECLARE @minidentval column_type;
DECLARE @maxidentval column_type;
DECLARE @nextidentval column_type;
SELECT @minidentval = MIN($IDENTITY),
@maxidentval = MAX($IDENTITY)
FROM tablename
IF @minidentval = IDENT_SEED('tablename')
SELECT @nextidentval = MIN($IDENTITY) + IDENT_INCR('tablename')
FROM tablename t1
WHERE $IDENTITY BETWEEN IDENT_SEED('tablename')
AND @maxidentval
AND NOT EXISTS (
SELECT *
FROM tablename t2
WHERE t2.$IDENTITY = t1.$IDENTITY + IDENT_INCR('tablename')
)
ELSE
SELECT @nextidentval = IDENT_SEED('tablename');
SET IDENTITY_INSERT tablename OFF;
-- Here is an example to find gaps in the actual data.
-- The table is called img and has two columns: the first column
-- called id_num, which is an increasing identification number, and the
-- second column called company_name.
-- This is the end of the illustration example.
-- Create the img table.
-- If the img table already exists, drop it.
-- Create the img table.
IF OBJECT_ID('dbo.img', 'U') IS NOT NULL
DROP TABLE img;
GO
CREATE TABLE img (
id_num INT IDENTITY(1, 1),
company_name SYSNAME
);
INSERT img (company_name)
VALUES ('New Moon Books');
INSERT img (company_name)
VALUES ('Lucerne Publishing');
-- SET IDENTITY_INSERT ON and use in img table.
SET IDENTITY_INSERT img ON;
DECLARE @minidentval SMALLINT;
DECLARE @nextidentval SMALLINT;
SELECT @minidentval = MIN($IDENTITY)
FROM img
IF @minidentval = IDENT_SEED('img')
SELECT @nextidentval = MIN($IDENTITY) + IDENT_INCR('img')
FROM img t1
WHERE $IDENTITY BETWEEN IDENT_SEED('img')
AND 32766
AND NOT EXISTS (
SELECT *
FROM img t2
WHERE t2.$IDENTITY = t1.$IDENTITY + IDENT_INCR('img')
)
ELSE
SELECT @nextidentval = IDENT_SEED('img');
SET IDENTITY_INSERT img OFF;
A. Fabric Data Warehouse'da IDENTITY sütunlu bir tablo oluşturun
Şunlar için geçerlidir: Doku Veri Ambarı
CREATE TABLE dbo.Employees (
EmployeeID BIGINT IDENTITY,
FirstName VARCHAR(50),
LastName VARCHAR(50),
Retired BIT
);
Bu ifade, her yeni satırın otomatik olarak bir bigint değeri olarak benzersiz EmployeeID bir değer aldığı tablo oluştururdbo.Employees. Daha fazla bilgi için Fabric Data Warehouse'daki IDENTITY bölümüne bakınız.
Böylece SELECT... INTO bu tablonun bir kopyasını oluşturabilir ve özellik IDENTITY hedef tabloda kalıcı olarak kalır:
SELECT *
INTO dbo.RetiredEmployees
FROM dbo.Employees
WHERE Retired = 1;
Hedef tablodaki sütun, IDENTITY özelliği kaynak tablodan miras alır. Bu senaryoya uygulanan sınırlamalar listesi için SELECT - INTO Maddesi'nin Veri Tipleri bölümüne bakınız.