我有一个表和一个存储过程。 我使用存储过程来更新表。 存储过程中有一些游标,SP 正在更新表。 我想通过存储过程更新行。 我不想更新行数,我只想更新行。 我创建了一个临时表来插入更新的行,但无法获取更新的行。 我怎样才能得到? 我正在使用 SQL Server。 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
昨天,我在生产环境中的Oracle表中进行了数据更正。 但是后来我发现我的选择命令取了62行,显然在相同条件下更新了64行。 由于我没有该更新中受影响的行列表,因此我无法比较所选的行列表和后来更新的行列表。 那么,有什么方法可以找到在那个特定时间在该表上更新的行列表,例如从16:20到16:21? Oracle是否跟踪在什么时间更新给定表的哪些行?
如果在数据库上启用了闪回功能,则可以在特定时间检查数据库中的数据。
SELECT * FROM table
AS OF TIMESTAMP
TO_TIMESTAMP('2015-01-14 13:33:00', 'YYYY-MM-DD HH:MI:SS')
WHERE column = 'your value';
使用此功能,您可以在之前和之后检查数据以查找怀疑的记录。 如果找不到记录,则可以使用
SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN) FROM table where <<your condition>>
但是,仅对于最近更新的几条记录,才可以获得SCN_TO_TIMESTAMP(ORA_ROWSCN)。 您只能与系统维护的“重做/闪回”窗口中的SCN进行相互转换。 一旦更改过期,则映射将丢失。
尝试使用oracle FLASHBACK功能(以防您的数据库根据闪回实用程序配置)
如果启用,它将显示过去任何给定时间点的表数据。
有关此的更多详细信息,请遵循http://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_flashback.htm#ADFNS01001
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.