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 はエンティティまたはテーブルの一部ではないため、ストアド プロシージャを使用して Member エンティティに対して Insert を実行し、追加パラメータを渡すにはどうすればよいですか?

4

1 に答える 1

0

これは簡単には不可能だという Gert の意見は正しい。Oracle はユーザー セッション全体のアクティビティ ID をログに記録する機能を提供しており、ユーザーとして Oracle に接続しています。そのため、ActivityId をすべての select プロシージャに追加し、その ActivityId をセッションにマッピングする select に追加しました (編集を実行する前に常に select があるため)。この場合、ActivityId 値が存在し、それをログに追加すると、すべてが完全に機能します。

于 2013-05-16T17:44:34.723 に答える