Нужен триггер для копирования новой строки в другую таблицу с некоторыми условиями - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть 2 таблицы (A, B).

  • В таблице A есть эти поля (1,2,3,4,5,6,7, ... 30).
  • таблица B содержит эти поля (1,2,3,6,7).
  • Основная таблица A - данные вставляются в таблицу A системой продаж.

Мне нужен триггер, чтобы сделать это:

Скопировать новую строку, вставленную в таблицу A и поле (3)> 1 и поле (7)! = '' В таблицу B.

Примечание: в таблицу A (в пиковые моменты времени) вставляются огромные объемы данных, поскольку этот код не влияет на производительность.

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

В SQL Server я бы сформулировал это следующим образом:

create trigger trig_tableA_insert on tableA after insert
as begin    
    insert into tableB (Field1, Field2, Field3, Field6, Field7)
        select i.Field1, i.Field2, i.Field3, i.Field6, i.Field7 
        from inserted i
        where i.field3 > 1 and i.field7 <> '';
end;

Это безопасно для операторов, которые вставляют несколько строк одновременно.

Если у вас много вставок, мне интересноесли это лучший подход. Предположительно, вам нужны данные сразу в tableB, потому что триггеры вызывают накладные расходы.

0 голосов
/ 04 ноября 2019

вот ваш trigger. добавление ниже condition не вставит данные в ваш tableB.

create trigger [t_TableA]
on tableA
after  [insert]
as
begin

    if ((select 1 from inserted where field3 > 1 and coalesce(field7, '') != '') != 1)
        begin
            return;
        end

    insert into tableB (Field1, Field2, Field3, Field6, Field7)
    select Field1, Field2, Field3, Field6, Field7 from inserted
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...