删除并回收SQL中的自动递增值

时间:2018-03-17 13:11:27

标签: sql sql-server

在我的一个数据库中,

一个表可以说“Active Records”有一列具有自动递增值或者说是标识列。

现在已删除该表中的记录,让我们说“已删除的记录”表。

现在。我希望它回到原始表“Active Records”。

这是否可以移动到具有原始标识的已删除记录的原始表?

因为我想用已删除的记录维护其他关系(我还没有删除)。 (这是因为用户可能错误地删除了记录。所以我想让它们回收记录)

这有可能吗?

实施例

我在“Active Records”中插入记录。所以自动增量值将是1,2,3,4等等。

现在我删除了记录2并将该记录移至“已删除的记录”

现在用户想要它。但是如果我将该记录插入“Active Records”,它将因为自动增量而被评估为5。但我的价值应保留为2。

1 个答案:

答案 0 :(得分:1)

您可以指定IDENTITY_INSERT...ON,以便使用提供的值而不是自动分配的值。必须指定显式列列表,其中包括SET IDENTITY_INSERT dbo.ActiveRecords ON; INSERT INTO dbo.ActiveRecords(RecordID, OtherData) SELECT RecordID, OtherData FROM dbo.DeletedRecords WHERE RecordID = 2; SET IDENTITY_INSERT dbo.ActiveRecords OFF; 列。例如:

In [20]: cat a.csv
Num
1
2
3
4

In [21]: cat b.csv
Num2
1
2
3
4

In [22]: import pandas as pd

In [23]: df = pd.concat((pd.read_csv(f) for f in ['a.csv', 'b.csv']), axis=1)

In [24]: df.to_csv('results.csv', index=False, sep=' ')

In [25]: cat results.csv
Num Num2
1 1
2 2
3 3
4 4