只用在帶有 INTO table 子句的 SELECT 語句中,以將標(biāo)識列插入到新表中。
盡管類似,但是 IDENTITY 函數(shù)不是與 CREATE TABLE 和 ALTER TABLE 一起使用的 IDENTITY 屬性。
IDENTITY ( data_type [ , seed , increment ] ) AS column_name
data_type
標(biāo)識列的數(shù)據(jù)類型。標(biāo)識列的有效數(shù)據(jù)類型可以是任何整數(shù)數(shù)據(jù)類型分類的數(shù)據(jù)類型(bit 數(shù)據(jù)類型除外),也可以是 decimal 數(shù)據(jù)類型。
seed
要指派給表中第一行的值。給每一個后續(xù)行指派下一個標(biāo)識值,該值等于上一個 IDENTITY 值加上 increment 值。如果既沒有指定 seed,也沒有指定 increment,那么它們都默認(rèn)為 1。
increment
用來添加到 seed 值以獲得表中連續(xù)行的增量。
column_name
將插入到新表中的列的名稱。
返回與 data_type 相同的類型。
因為該函數(shù)在表中創(chuàng)建一個列,所以必須用下列方式中的一種在選擇列表中指定該列的名稱:
--(1)
SELECT IDENTITY(int, 1,1) AS ID_Num
INTO NewTable
FROM OldTable
--(2)
SELECT ID_Num = IDENTITY(int, 1, 1)
INTO NewTable
FROM OldTable
下面的示例將來自 pubs 數(shù)據(jù)庫中 employee 表的所有行都插入到名為 employees 的新表。使用 IDENTITY 函數(shù)在 employees 表中從 100 而不是 1 開始編標(biāo)識號。
USE pubs
IF EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'employees')
DROP TABLE employees
GO
EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'
SELECT emp_id AS emp_num,
fname AS first,
minit AS middle,
lname AS last,
IDENTITY(smallint, 100, 1) AS job_num,
job_lvl AS job_level,
pub_id,
hire_date
INTO employees
FROM employee
GO
USE pubs
EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'false'
相關(guān)文章