如何从mssql表获取更新的身份?

时间:2019-01-17 13:12:21

标签: sql-server vb.net

我试图通过将更新后的行保存在另一个表中来跟踪它们。我有这样的代码:

"UPDATE Table1 SET [HastaSN] = @HastaSN WHERE Id = @Id; INSERT INTO Changes ([TableName],[Ids]) VALUES ('Table1 ', (SELECT IDENT_CURRENT('[Table1 ]')))"

当我尝试更新数据库中的几行时,我总是得到一个表:

  TableName  Ids
    Table1  56697
    Table1  56697
    Table1  56697 

这只是向我显示表格的最后一个ID。并非每个ID号。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

OUTPUT子句应该为您工作。这是一个使用它的示例。

DROP TABLE IF EXISTS #t;
CREATE TABLE #t
(
    ID INT NOT NULL IDENTITY(1,1),
    SomeText VARCHAR(100)
);

DROP TABLE IF EXISTS #IDTable;
CREATE TABLE #IDTable (ID INT);

INSERT INTO #t (SomeText)
VALUES ('Hello'),
       ('World');

UPDATE #t
SET SomeText = 'World!'
OUTPUT Inserted.ID
INTO #IDTable
WHERE ID = 2;

SELECT ID FROM #IDTable;

在您的示例中,它可能看起来像这样:

UPDATE Table1
SET [HastaSN] = @HastaSN
OUTPUT 'Table1', Inserted.Id
INTO Changes
WHERE Id = @Id