我们的架构已设置好,因此每个数据库的更新,插入和删除都是通过存储过程完成的。随着每次更新,插入或删除,我们传入一个ActionId参数,该参数对于用户会话是唯一的,并存储在日志表中。表定义是:
CREATE TABLE Member(
MemberId int primary key identity not null,
MemberName nvarchar(100) not null)
使用插入存储过程定义:
ALTER procedure [dbo].[proc_MemberInsert]
(
@MemberName nvarchar(100),
@ActionId int
)
AS
BEGIN
INSERT
INTO
dbo.[Member] (
MemberName)
values (
@MemberName)
INSERT
INTO
dbo.[Activity] (
TableName,
ActivityId)
values (
'Member',
@ActivityId)
END
如何使用存储过程对成员实体执行Insert,并传入一个附加参数,因为此ActivityId不是实体或任何表的一部分?
答案 0 :(得分:0)
格特是正确的,这是不容易的。 Oracle确实提供了记录整个用户会话的活动ID的能力,并且我们以用户身份连接到Oracle。因此,我们最终将ActivityId添加到所有选择过程,并将ActivityId添加到会话中(因为我们在执行任何编辑之前总是有一个select)。在这种情况下,ActivityId值存在,我们将其添加到日志中,一切都运行良好。