Триггер SQL Server с условием - PullRequest
       17

Триггер SQL Server с условием

0 голосов
/ 16 сентября 2018

Я хотел бы создать триггер INSERT для SQL Server 2008 с условием.

Например, у меня есть таблица транзакций с 2 ​​типами транзакций A и B. Мне бы хотелось, чтобысрабатывание триггера при наличии транзакции вставки только типа А.

Как мне это сделать?

Я буду очень рад получить ее и, если возможно, пример

Спасибо

ТАБЛИЦА :

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

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Это немного сложно.Вам нужен 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;
0 голосов
/ 16 сентября 2018

У меня есть идея mysql: вы можете проверить, что при условии вставки в один столбец, как выполнить триггер для вставки в одну строку в новой таблице, например:

DELIMITER $$

USE test $$ CREATE TRIGGER TestTrigger ПОСЛЕ ВСТАВКИ НА testtable ДЛЯ КАЖДОГО РЯДА НАЧИНАЕТСЯ НОВЫЙ.END IF;КОНЕЦ;$$

DELIMITER;

#

Структура тестовой таблицы:

CREATE TABLE testtable (txn BIGINT (12) DEFAULT '0', txn_dateDATETIME DEFAULT NULL, KEY ind_msisdn (txn));

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

...