我有哪几种领域包括表格:是否有可能是一个自动增量字段重复?
- CONTACT_ID
- 电话
- phone_id
contact_id
和phone
的主键和phone_id
是一个自动增量字段。我想用它来识别某个条目。所以我想知道,当我输入数据时,有可能复制那个非主字段。
我有哪几种领域包括表格:是否有可能是一个自动增量字段重复?
contact_id
和phone
的主键和phone_id
是一个自动增量字段。我想用它来识别某个条目。所以我想知道,当我输入数据时,有可能复制那个非主字段。
除非没有约束,某些唯一索引,您可以在该列中重复值,因为1)您可以打开identity_insert,2)您可以重新设定增量。
这里就是一个证明:
CREATE TABLE #test(id INT IDENTITY(1, 1))
INSERT INTO #test DEFAULT VALUES
INSERT INTO #test DEFAULT VALUES
INSERT INTO #test DEFAULT VALUES
SET IDENTITY_INSERT #test ON
INSERT INTO #test(id) VALUES(1)
SET IDENTITY_INSERT #test OFF
INSERT INTO #test DEFAULT VALUES
INSERT INTO #test DEFAULT VALUES
DBCC CHECKIDENT ('#test', RESEED, 1);
INSERT INTO #test DEFAULT VALUES
INSERT INTO #test DEFAULT VALUES
SELECT * FROM #test
DROP TABLE #test
输出:
id
1
2
3
1
4
5
2
3
简短的回答是是的,这是可能的。
SQL Server不强制标识列的唯一约束,这意味着可以有重复的值,但是,Sql服务器不会在标识列中生成重复值本身。
在向表中插入一行时,sql server中的标识列由sql server本身填充。
但是,您可以在插入语句之前使用SET IDENTITY_INSERT
来指定值。
有一对夫妇的事情,你应该知道的:
set identity insert on
。因此,在向表中插入记录后,必须在该表上设置identity_insert。
如果你运行'SET IDENTITY_INSERT yourTable ON',你可以。否则,你不能。 –