带有条件的SQL Server触发器

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

我想用条件为SQL Server 2008创建一个INSERT触发器。

例如,我有一个包含两种类型的事务A和B的事务表。我想在只有A类型的插入事务时触发触发器。

我怎么做?

如果可能的话,我会非常乐意得到这个例子

谢谢

表:

Txn     Txn Date
---------------------------
A       2018-08-01 01:05:00
A       2018-08-01 01:05:01
B       2018-08-01 01:05:05
B       2018-08-01 01:05:09
A       2018-08-01 01:05:15
B       2018-08-01 01:05:41
sql sql-server-2008 triggers constraints
2个回答
0
投票

这有点复杂。你需要一个instead of触发器。

create trigger trig_transactions_type on transactions
instead of insert as
begin
    if (not exists (select 1
                    from inserted i
                    where type = 'B'
                   )
        )
    begin
       raiseerror ('Type "B" is required', 10, 1)
       rollback transaction;
    end;
    else
    begin
       insert into transactions (type, txn_date, . . .)
           select type, txn_date, . . .
           from inserted;
    end;
end;

-1
投票

我有mysql的想法:您可以检查单列上的插入条件如何执行触发器插入新表中的单行示例:

DELIMITER $$

使用test $$创建触发器TestTrigger插入testtable之后每行开始如果NEW.TXN ='A'然后插入testb(columna,columnb)VALUES(1,'Suresh');万一;结束; $$

DELIMITER;

#

测试表结构如下:

CREATE TABLE testtabletxn BIGINT(12)DEFAULT'0',txn_date DATETIME DEFAULT NULL,KEY ind_msisdntxn));

CREATE TABLE testbcolumna INT(11)DEFAULT NULL,columnb VARCHAR(30)DEFAULT'');

© www.soinside.com 2019 - 2024. All rights reserved.