FOR INSERT触发器不触发

问题描述 投票:1回答:2

我有插入触发器问题

这是我的触发代码:

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

奇怪的是,我确切另建表一样,我想要触发它和触发适用于新表,但旧的不工作。信息:在旧表我有在同一时间多个插入。

这里是架构都我的表:

旧的统计(不工作就可以了该触发器)

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

触发的测试表的伟大工程,具有相同的架构,但在旧的统计表格制作触发用户不能在旧插入了后!

sql sql-server tsql triggers sql-server-2008-r2
2个回答
0
投票

你有你的错插入语句所以它不执行触发器。正确的是如下。

CREATE TRIGGER [dbo].[Vtriggers] ON [dbo].[stats]
FOR INSERT
AS
INSERT  INTO [NewDB].dbo.NewStat
        ( StatID )
VALUES  ( ID )

-1
投票

尝试这个 :-

create TRIGGER [dbo].[Vtriggers] ON [dbo].[stats]
FOR INSERT
AS
INSERT INTO [NewDB].dbo.NewStat (StatID) values(SELECT max(ID)
FROM inserted)
© www.soinside.com 2019 - 2024. All rights reserved.