1

挿入トリガーに問題があります

これは私のトリガーコードです:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create TRIGGER [dbo].[Vtriggers] ON [dbo].[stats]
FOR INSERT
AS
INSERT INTO [NewDB].dbo.NewStat (StatID)
SELECT ID
FROM inserted

奇妙なことに、トリガーを作成したいテーブルとまったく同じ別のテーブルを作成し、新しいテーブルではトリガーが機能しますが、古いテーブルでは機能しません。info : 古いテーブルでは、同時に複数の挿入があります。

私の両方のテーブルのスキーマは次のとおりです。

古い統計(トリガーが機能していない)

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[stats](
    [ID] [int] IDENTITY(1,1) NOT NULL,
      [Code] [nvarchar](100) NULL,
 CONSTRAINT [PK_Stat] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  =    ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 80) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

そして新しいテスト統計(そのトリガーはそれに作用します):

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Teststats](
    [ID] [int] IDENTITY(1,1) NOT NULL,
      [Code] [nvarchar](100) NULL,
 CONSTRAINT [PK_Teststats] PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  =    ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 80) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

そして、ここに別のデータベースの宛先テーブルがあります:

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[NewStat](
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [StatID] [int] NULL,
) ON [PRIMARY]

GO

トリガーは、同じスキーマのテスト テーブルではうまく機能しますが、トリガー ユーザーを作成した後の古い統計テーブルでは、古い統計テーブルに挿入できなくなりました。

4

2 に答える 2

0

挿入ステートメントが間違っているため、トリガーは実行されません。正しいものは次のとおりです。

CREATE TRIGGER [dbo].[Vtriggers] ON [dbo].[stats]
FOR INSERT
AS
INSERT  INTO [NewDB].dbo.NewStat
        ( StatID )
VALUES  ( ID )
于 2013-08-26T06:27:32.837 に答える