1

私はテーブルを持っていますTableAtriggerレコードの挿入、更新、または削除時に起動されTableA、別のテーブルにレコードを挿入するを作成しましたTableB。今、私が困難を感じているのはstored proceduresTableA私が戻ってきたもののいくつかからscope_identity()ですinserted recordTableA'sから取得している間、レコードから返す必要がありますTableB。この問題を解決する方法はありますか?scope_identity()からTableAだけ、NOTから欲しいTableB。あなたの貴重な応答を待っています。

前もって感謝します..

4

1 に答える 1

1

SCOPE_IDENTITY() はその状況で機能するはずです。トリガーで行われた挿入ではなく、ストアド プロシージャと TableA への挿入にスコープを設定する必要があります。

CREATE TABLE [dbo].[TableA](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [TestColumn] [nvarchar](50) NULL
) ON [PRIMARY]

CREATE TABLE [dbo].[TableB](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [TestColumn] [nvarchar](50) NULL
) ON [PRIMARY]

CREATE TRIGGER [dbo].[TableA_AIDU]
   ON  [dbo].[TableA]
   AFTER INSERT,DELETE,UPDATE
AS 
BEGIN
    SET NOCOUNT ON;
    INSERT INTO TableB ( TestColumn )
    SELECT 'TableA Modified'
END

CREATE PROCEDURE [dbo].[sp_InsertToTableA]
    @ID INT OUTPUT  
AS
BEGIN
    SET NOCOUNT ON;
    INSERT TableA ( TestColumn )
    SELECT 'Insert from sp_InsertToTableA'
    SET @ID = SCOPE_IDENTITY()
END

ストアド プロシージャは TableA から ID を返し、TableB の挿入は期待どおりにトリガーされます。SCOPE_IDENTITY() の代わりに @@IDENTITY を使用していませんか?

于 2013-01-18T06:00:00.787 に答える