我试图通过将更新后的行保存在另一个表中来跟踪它们。我有这样的代码:
"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号。我该如何解决这个问题?
答案 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