将自动增量列添加到现有 table 并创建外键

Add auto-increment column to an existing table and create foreign key

我正在使用 SQL Server 2014。有两个 table T1T2 具有关系数据。这些 table 有超过 100000 行。

T1 有一个主键 ID (varchar) 并且 T2 与此 ID (varchar) 映射。

我想将另一个自动递增列 AutoId (int) 添加到 table T1,并且我想将列 AutoId 添加到table T2 还有。

然后我想根据现有的 ID.

T1 更新 AutoId in T2

解决这个问题最简单的方法是什么?

插入后可以使用触发器

This is for new Records

CREATE TRIGGER [schema_name.]trigger_name
ON table_name
AFTER  {[INSERT],[UPDATE],[DELETE]}
[NOT FOR REPLICATION]
AS
{sql_statements}

或者一次最好的方法是更新:

This is for Old Records
update t2
set t2.ID2 = t1.ID2
 from table1 t1
join table2 t2 on t1.id= t2.id 

您可以在 T1 table 上使用 IDENTITY 创建 AutoID,即使它有 PRIMARY KEYexisting data

您可以使用 JOIN 和 ID Primary key 在 T2 table 中更新该 AutoID。

请检查以下查询以获得答案。

CREATE TABLE T1(ID VARCHAR(50) PRIMARY KEY)

CREATE TABLE T2(T2ID INT IDENTITY, ID VARCHAR(50))

INSERT INTO T1(ID)
VALUES ('V1'),('V2'),('V3'),('V4'),('V5')

INSERT INTO T2(ID)
VALUES ('V1'),('V2'),('V3'),('V4'),('V5')

SELECT ID FROM T1
SELECT T2ID,ID FROM T2
Go

ALTER TABLE T1
ADD AutoID INT NOT NULL IDENTITY(1,1)
GO

ALTER TABLE T2
ADD AutoID INT
Go

SELECT ID,AutoID FROM T1
SELECT T2ID,ID, AutoID FROM T2
Go

UPDATE TT
SET TT.AutoID = T.AutoID
FROM T1 AS T
INNER JOIN T2 AS TT ON TT.ID = T.ID
GO

SELECT ID,AutoID FROM T1
SELECT T2ID,ID, AutoID FROM T2

DROP TABLE T1
GO
DROP TABLE T2
GO

Demo