有人禁用了SQL DB中表的标识列。即使表中已有数据,是否可以重新启用该列的功能?并维护现有的身份值?
我知道我可以将数据复制到另一个表,并在设置Identity_Insert后重新插入。
答案 0 :(得分:6)
您无法在现有列上启用 IDENTITY
,这在SQL Server中是不可能的(至少在2012版本之前)。
您需要做的就是您所描述的内容:
IDENTITY
列SET IDENTITY_INSERT ON
您可以在SQL Server Mgmt Studio中的可视化表设计器中“重新启用”身份规范,但这实际上只为您执行上述步骤中的步骤。
答案 1 :(得分:3)
正如* marc_s *表示你可以使用
我不知道是否有其他方法可以做到这一点,但你可以使用
CREATE TABLE tblNewTable
(
//Put the columns and datatypes of the former table
)
INSERT INTO tblNewTable
AS
SELECT * FROM oldTable
然后放下表格
DROP TABLE oldTable
然后重新创建新表并添加标识列,然后使用
INSERT INTO tblNewRecreatedTable (//Columns of the new created table except the column with the identity
AS
SELECT //Columns of the table you copied the data to except the Columned that you defined identity
我希望它有所帮助