Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
SaorDual Member Откуда: Сообщений: 34 |
Есть текстовый файл ~7000 записей. Необходимо загрузить его в таблицу. Использую программу bcp bcp [bd_test].[dbo].[Filbert_contact_infinity] IN Import.txt -h "FIRE_TRIGGERS" -c -U sa -P qwe; на таблице Filbert_contact_infinity есть триггер на insert, который вставляет новую запись в другую таблицу. При запуске, в таблицу Filbert_contact_infinity вставляет все записи корректно, а вот триггер отрабатывает только 1 раз на первую вставляемую запись. Что не так делаю? |
25 июн 14, 09:45 [16215047] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9646 |
|
||
25 июн 14, 09:55 [16215100] Ответить | Цитировать Сообщить модератору |
SaorDual Member Откуда: Сообщений: 34 |
CREATE TRIGGER [dbo].[Filbert_contact_infinity_ins] ON [dbo].[Filbert_contact_infinity] WITH EXECUTE AS CALLER FOR INSERT AS begin DECLARE @number varchar(32),@dt DATETIME,@state INTEGER,@typ INTEGER; SELECT @number=number, @dt=dt, @state=state, @typ=typ FROM inserted; INSERT INTO contact_log (parent_id,r_debt_id,r_phone_id,dt,typ,result,reg_dt) SELECT person.id parent_id,debt.id r_debt_id,phone.id r_phone_id,@dt,@typ,@state,@dt FROM debt JOIN person ON debt.parent_id = person.id JOIN phone ON person.id = phone.parent_id WHERE phone.number = @number; end; Вот триггер. А как необходимо его написать? Подскажите пожалуйста |
25 июн 14, 10:00 [16215147] Ответить | Цитировать Сообщить модератору |
Maxx Member [скрыт] Откуда: Сообщений: 24290 |
SaorDual, invm - прав,у вас триггер кривой |
25 июн 14, 10:03 [16215164] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9646 |
create trigger [dbo].[Filbert_contact_infinity_ins] ON [dbo].[Filbert_contact_infinity] with execute as caller for insert as begin set nocount on; insert into contact_log (parent_id,r_debt_id,r_phone_id,dt,typ,result,reg_dt) select n.id, d.id, p.id, i.dt, i.typ, i.state, i.dt from inserted i join phone p on p.number = i.number join person n on n.id = p.parent_id join debt d on d.parent_id = n.id; end; |
||
25 июн 14, 10:24 [16215315] Ответить | Цитировать Сообщить модератору |
SaorDual Member Откуда: Сообщений: 34 |
Спасибо, навели на мысль, поправил триггер все работает: ALTER TRIGGER [dbo].[Filbert_contact_infinity_ins] ON [dbo].[Filbert_contact_infinity] WITH EXECUTE AS CALLER FOR INSERT AS begin INSERT INTO contact_log (parent_id,r_debt_id,r_phone_id,dt,typ,result,reg_dt) SELECT person.id parent_id, debt.id r_debt_id, phone.id r_phone_id, inserted.dt, inserted.typ, inserted.state, inserted.dt FROM debt JOIN person ON debt.parent_id = person.id JOIN phone ON person.id = phone.parent_id JOIN inserted ON inserted.number=phone.number; end; |
25 июн 14, 10:29 [16215359] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |