Udostępnij za pośrednictwem


TOŻSAMOŚĆ (właściwość) (Transact-SQL)

Tworzy kolumna w tabela.Ta właściwość jest używana z CREATE TABLE i ALTER TABLE Transact-SQL instrukcji.

Ostrzeżenie

Identyfikacja właściwość różni się od obiektów SQL- DMO Identity właściwość udostępnia wiersza właściwość tożsamości kolumna.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

IDENTITY [ (seed , increment ) ]

Argumenty

  • seed
    To wartość, która jest używana dla pierwszego wiersza ładowane do tabela.

  • increment
    To wartość przyrostowe, która jest dodawana do wartości tożsamości poprzedniego wiersza, który został załadowany.

Należy określić zarówno materiału siewnego i przyrostu lub żadna.Jeśli zostanie podana żadna wartość domyślna to (1,1).

Uwagi

Jeśli kolumna tabela , w której często dokonywane są usunięcia, pomiędzy wartościami identyfikacyjnymi mogą występować luki.Jeśli jest to niepożądane, należy używać tożsamości właściwość.Jednak upewnij się, że utworzono przerw lub wypełnienia istniejącego przerwy, ocenić istniejące wartości identyfikacyjne przed wprowadzeniem jawnie, jeden z USTAWIONA na IDENTITY_INSERT.

Ponownego wartość usunięto tożsamości użyć przykładowego kodu w przykładzie b aby poszukać następnego wartości dostępnych tożsamości.Zamień tablename, column_type, i MAX(column_type) - 1 z tabela nazwa, typ danych kolumna tożsamości i wartość liczbową maksymalną dozwoloną wartość (dla tego typu danych) -1.

DBCC CHECKIDENT umożliwia sprawdzenie wartości bieżącej tożsamości i porównać je z maksymalną wartość w kolumnatożsamości.

Jeśli tabela z kolumna zostanie opublikowana dla replikacja, kolumna tożsamooci muszą być zarządzane w sposób odpowiedni dla typu replikacja używane.Aby uzyskać więcej informacji, zobacz Replikowanie kolumny tożsamości.

Przykłady

A.Tworzenie tabeli przy użyciu tożsamości, właściwość

Poniższy przykład tworzy, używając nowej tabela IDENTITY właściwość automatycznie kolejnym numer identyfikacyjny.

USE AdventureWorks2008R2
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.Za pomocą ogólna składnia do znajdowania luk w wartości tożsamości

W poniższym przykładzie pokazano ogólna składnia znajdowanie przerw w wartości tożsamości, gdy dane zostaną usunięte.

Ostrzeżenie

Pierwsza część następujących Transact-SQL skrypt jest przeznaczony wyłącznie jako ilustracja.Można uruchomić Transact-SQL skrypt, który rozpoczyna się od komentarz: -- 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