0

我们的架构设置为通过存储过程完成每个数据库更新、插入和删除。随着每次更新、插入或删除,我们传入一个 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

我如何使用存储过程对成员实体执行插入,并传入一个附加参数,因为这个 ActivityId 不是实体或任何表的一部分?

4

1 回答 1

0

Gert 是正确的,这并不容易。Oracle 确实提供了为整个用户会话记录活动 ID 的能力,我们以用户身份连接到 Oracle。所以我们最终将 ActivityId 添加到所有选择过程中,并在选择映射中将 ActivityId 映射到会话(因为在执行任何编辑之前我们总是有一个选择)。在这种情况下,ActivityId 值存在,我们将其添加到日志中,一切正常。

于 2013-05-16T17:44:34.723 回答