关于SQLSERVER触发器的一个问题

博主在使用SQL触发器实现功能时,发现使用INSERT SELECT插入数据存在问题,只能插入一条数据。文中给出了创建表格、触发器的代码,以及不同插入语句的测试情况,包括单条插入、多条插入和INSERT - SELECT语句插入。

最近使用触发器搞了个功能,发现里面有个问题:使用INSERT SELECT插入数据时,只能插入一条数据。大致的测试情况如此:

1、创建表格:

CREATE TABLE [dbo].[T1](--T1,作为主表
    [c1] [varchar](36) NULL,
    [c2] [varchar](36) NULL
) ON [PRIMARY]

CREATE TABLE [dbo].[T2](--T2,作为从表
    [c1] [varchar](36) NOT NULL,
    [c2] [varchar](36) NOT NULL
) ON [PRIMARY]

2、创建触发器:
CREATE TRIGGER [dbo].[T1_TRIGGER]
   ON  [dbo].[T1] AFTER INSERT
AS 
BEGIN
    SET NOCOUNT ON;
    DECLARE @c1 VARCHAR(36);
    DECLARE @c2 VARCHAR(36);
    SELECT @c1=c1,@c2=c2 FROM inserted
    -- Insert statements for trigger here
    INSERT INTO T2(c1,c2)
    VALUES (@c1,@c2)
END

3、测试SQL:

3.1、单条插入语句执行,正常

INSERT INTO T1(C1, C2)  VALUES(NEWID(), NEWID())

3.2、多条插入语句执行,正常

INSERT INTO T1(C1, C2) VALUES(NEWID(), NEWID())

INSERT INTO T1(C1, C2) VALUES(NEWID(), NEWID())

INSERT INTO T1(C1, C2) VALUES(NEWID(), NEWID())

3.3、使用INSERT-SELECT语句,只能插入第一条数据

INSERT INTO T1(C1, C2)
SELECT NEWID(), NEWID()
UNION
SELECT NEWID(), NEWID()
UNION
SELECT NEWID(), NEWID()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冬瓜就是我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值