Aracılığıyla paylaş


IDENTITY (özellik) (Transact-SQL)

Kimlik sütun, bir tablo oluşturur.Bu özellik, ALTER tablo ve CREATE tablo ile kullanılır. Transact-SQL ifadeler.

Not

KIMLIK özelliği, SQL-DMO farklıdır Kimlik özellik sütun satır kimlik özelliği'ni gösterir.

Topic link iconTransact-SQL sözdizimi kuralları

IDENTITY [ (seed , increment) ]

Bağımsız değişkenler

  • seed
    Yüklenen ilk satırı için kullanılan değer tablo.

  • increment
    Yüklenen önceki satırın Kimlik değerini eklenen artımlı değerdir.

Hem çekirdek ve Artım veya hiçbiri belirtmeniz gerekir.Hiçbiri belirtilmediyse, (1,1) varsayılandır.

Remarks

Boşluklar, kimlik değerleri arasında sık sık silme ile ilgili bir tablo için bir kimlik sütun varsa oluşabilir.Bu durum bir sorun oluşturacaksa, KIMLIK özellik kullanın.Ancak, hiçbir boşluklar oluşturulmuş olduğundan emin olun veya varolan bir boşluğu doldurmak için varolan kimlik değerleri açık olarak bir küme ıdentıty_ınsert ON girmeden önce değerlendirin.

Kaldırılan kimlik değeri yeniden kullanma, örnek kod örneği B sonraki kullanılabilir kimlik değeri aramak için kullanın.Değiştir tablename, column_type, ve MAX(column_type) - 1 bir tablo adı, kimlik sütun veri türü ve değeri (Bu veri türü için) izin verilen en yüksek sayısal değeri -1.

Geçerli kimlik değerini denetleyin ve bunu kimlik sütunundaki en büyük değer ile karşılaştırmak için DBCC CHECKIDENT kullanın.

Çoğaltma için bir kimlik sütunuyla tabloda yayımladıysanız, kimlik sütun kullanılan çoğaltma türü için uygun bir şekilde yönetilmelidir.Daha fazla bilgi için bkz:Kimlik sütunları çoğaltılıyor.

Örnekler

C.CREATE tablo ile KIMLIK özellik'ni kullanma

Aşağıdaki örnek, kullanarak yeni bir tablo oluşturur IDENTITY özellik otomatik olarak artan bir kimlik numarası.

USE AdventureWorks
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.Boşlukları kimlik değerleri bulmak için genel sözdizimi kullanarak

Aşağıdaki örnek, veri bağlantısı kaldırıldığında, boşluklar, kimlik değerleri bulmak için genel sözdizimi gösterir.

Not

Aşağıdaki ilk bölümü Transact-SQL komut dosyası, yalnızca gösterim amacıyla tasarlanmıştır. Çalıştırabilirsiniz Transact-SQL açıklama ile başlatılan komut dosyası: -- 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