首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查看update语句后更改的值

查看update语句后更改的值
EN

Stack Overflow用户
提问于 2011-09-29 22:58:42
回答 2查看 363关注 0票数 0

我只是想知道,在更新命令发生后,是否可以查看它对表的更改?

事务日志是否会存储此类信息,即这是以前的/当前值,这是新的/更改的值

不确定这是否可能。服务器为ms sql 2008

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-01 03:24:16

事务日志确实包含这些信息,尽管解码它并不容易-我写了一篇博客文章,其中包含一个解码事务日志中的简单update语句的示例- http://sqlfascination.com/2010/02/21/decoding-a-simple-update-statement-within-the-transaction-log/

然而,根据正在执行的更新,日志中的条目变得更加复杂,并且没有关于如何解码它们的文档。逆向工程是相当困难的。

我永远不会建议使用这种检查日志的技术来检索数据,它只值得从内部学习的角度/取证角度进行研究。

票数 0
EN

Stack Overflow用户

发布于 2011-09-29 23:01:46

您可以使用OUTPUT将更改插入到另一个表中和/或返回更改的结果集:

代码语言:javascript
运行
复制
set nocount on
DECLARE @Table     table (PK int, col1 varchar(5))
DECLARE @SavedPks  table (PK int)

INSERT INTO @Table VALUES (1,'g')
INSERT INTO @Table VALUES (2,'g')
INSERT INTO @Table VALUES (3,'g')
INSERT INTO @Table VALUES (4,'g')
INSERT INTO @Table VALUES (5,'x')
INSERT INTO @Table VALUES (6,'x')
set nocount off

UPDATE @Table
    SET col1='xyz'
    OUTPUT INSERTED.PK INTO @SavedPks --save in a table
    OUTPUT 'result set',INSERTED.PK, INSERTED.col1 AS new_col1, DELETED.col1 AS old_Col1 --result set
    WHERE col1='g'

select * from @Table
select * from @SavedPks

输出:

代码语言:javascript
运行
复制
           PK          new_col1 old_Col1
---------- ----------- -------- --------
result set 1           xyz      g
result set 2           xyz      g
result set 3           xyz      g
result set 4           xyz      g

(4 row(s) affected)

PK          col1
----------- -----
1           xyz
2           xyz
3           xyz
4           xyz
5           x
6           x

(6 row(s) affected)

PK
-----------
1
2
3
4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7599276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档