1
我试图打开事务,然后删除一条记录,现在我需要将已删除的记录插入到事件表中。问题是我看不到结果,因为它已被删除。从打开的事务中读取已删除或更新的值
CREATE procedure [dbo].[TestData] (@clientid bigint) As
Begin
print ''abc''
insert into Client_Event_Log values (getdate(),0,@clientid,100,''B0AE3162-671C-E211-AF2A-00155D051024'',NULL)
BEGIN TRY
BEGIN TRAN
Delete from access_types -- There is only record in the table.
8559230 abc 101 0 2010-01-01 10:25:25.000
select * from access_types -- cann't see the deleted record even before the session.
DECLARE @cGTAEventLog bigint
select @cGTAEventLog=Access_Type_Id from access_types
exec TestData @cGTAEventLog -- Now i am passing 8559230 to the SP to insert into event
table but it has been delete before so can't insert NULL
Commit Tran
END TRY
BEGIN CATCH
ROLLBACK TRAN
--Error message
PRINT 'Error: ' +
CONVERT(VARCHAR,ERROR_NUMBER()) + ' - ' +
CONVERT(VARCHAR,ERROR_SEVERITY()) + ' - ' +
CONVERT(VARCHAR,ERROR_STATE()) + ' - ' +
ERROR_MESSAGE() +
' Raise Error occurred at line ' + CONVERT(VARCHAR,ERROR_LINE())
END CATCH
END
我需要找到一种方法来删除后访问数据,所以我可以插入到事件表中。
您是否尝试过在*删除它之前插入记录*?既然你是在一个交易中,那么你在做什么顺序并不重要,它们要么一起成功,要么一起失败。 – mellamokb 2013-04-25 15:26:48
是的,这将工作,但我需要删除后。我可以有更新或插入相同的情况。 – Ally 2013-04-25 15:30:02