将自动增量列添加到现有 table 并创建外键
Add auto-increment column to an existing table and create foreign key
我正在使用 SQL Server 2014。有两个 table T1
和 T2
具有关系数据。这些 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 KEY
和 existing 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
我正在使用 SQL Server 2014。有两个 table T1
和 T2
具有关系数据。这些 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 KEY
和 existing 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