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.
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
Zobacz także