0

Id(int)がインクリメントされた挿入ストアドプロシージャがあります。それを取得してId、別のテーブルと、ストアドプロシージャの挿入からの変数の1つに挿入します。

私はあなたができることを知っていますselect from insertedが、私が誤解していなければ、それはあなたが行から値を選択することを可能にしましたinserted

ストアドプロシージャを実行した後、変数を永続化してトリガーに渡す方法はありますか?

編集:申し訳ありませんが、使用しているストアドプロシージャを含めさせてください。テーブルfooには自動インクリメントされるIDがあり、このストアドプロシージャの実行後に、トリガーがfooのIDと@midを別のテーブルに挿入する必要があります。ただし、ご覧のとおり、@midはテーブルfooに挿入されていません。

 ALTER PROCEDURE [dbo].[foo]
    @userName varchar(50),
    @somefoo varbinary(max),
    @mid int
AS
BEGIN
    SET NOCOUNT ON;

    INSERT INTO fooTable(UserName, SomeFoo)
    VALUES (@userName, @somefoo);

END
4

2 に答える 2

1

挿入された疑似テーブルを使用すると、現在テーブルにある値を選択できます。削除された疑似テーブルを使用すると、挿入が行われる前にテーブルにあった値を選択できます。あなたが挿入procと言うので、私はそれが挿入/更新procではないと仮定しています。私はあなたが何をしたいのかはっきりしていません。トリガーでIDフィールドと他の1つの列をコピーしますか?簡単。トリガーが、実際にはテーブルに格納されていないIDフィールドとprocパラメーターをコピーするようにしますか?不可能ですが、それが必要な場合は、代わりにprocで実行できます。

1)トリガー:

Insert into foo (a, b)
select my_identity, some_column
from inserted

2)手順:

    ..do main insert...
    insert into foo (a, b)
    select scope_identity(), @some_parameter
于 2012-08-29T23:18:33.060 に答える
0

テーブル拡張プロパティを目的に使用できます。

ステップ1:テーブルの拡張プロパティを定義します。

ここに画像の説明を入力してください

ステップ2:テーブルセットに挿入する前のストアドプロシージャで、パラメータによって拡張プロパティを定義します。

EXEC sys.sp_updateextendedproperty @name=N'@ParameterName', @value='YourValue' 

ステップ3:トリガーで定義された拡張プロパティを取得して使用します。sys.extended_properties定義された拡張プロパティを取得するためにテーブルを使用します。

于 2012-08-30T06:08:41.610 に答える