Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Trigger for insert  [new]
Kusanagi
Member

Откуда: от верблюда
Сообщений: 22
Приятного времени суток, уважаемые форумчане.

Такой вопрос: Есть две связанные таблицы, при вставке записи в одну таблицу с опр.значением поля Caption должен сработать триггер, который проверяет значение Caption в другой таблице ( во второй оно unique) - если его нет, то должен вставить также новую строку во вторую таблицу, взяв при этом некоторые значения из только что вставленной строки. Как в коде сослаться на только что вставленную строку? ( через inserted чего то не получается)
Вообщем, помогите доделать код:
Заранее спасибо.
   СREATE TRIGGER [dbo].[Trigger_Products_AfterInsert]
    ON [dbo].[Products]
    FOR  INSERT
    AS
    BEGIN
         if not exists (select store.Caption
                        from inserted ins,
                       Store store
                where store.Caption = ins.Caption)
                begin 
                    insert into Store values ()  -- что-то типа (inserted.field1, inserted.field2,..) . 
                                                                     -- не видит inserted таблицу
                end 
        /* else 
            begin
             
            end */
    END
26 авг 13, 18:17    [14757208]     Ответить | Цитировать Сообщить модератору
 Re: Trigger for insert  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
не видит inserted таблицу


Это полный текст сообщения об ошибке?

insert into Store SELECT i.field1, i.field2,.. FROM inserted i
26 авг 13, 18:22    [14757235]     Ответить | Цитировать Сообщить модератору
 Re: Trigger for insert  [new]
invm
Member

Откуда: Москва
Сообщений: 9401
create trigger [dbo].[Trigger_Products_AfterInsert]
on [dbo].[Products]
for insert
as
begin
 set nocount on;

 merge into Store t
 using inserted s on s.Caption = t.Caption
 when not matched then
  insert (Caption, field1, ..., fieldN) values (s.Caption, s.field1, ..., s.fieldN);

end;
go
26 авг 13, 18:27    [14757262]     Ответить | Цитировать Сообщить модератору
 Re: Trigger for insert  [new]
Kusanagi
Member

Откуда: от верблюда
Сообщений: 22
Нет, просто в VS2012 работаю: обычно подсказка выскакивает. А при вставке пропустить одно поле? Ну , к примеру, если это автоинкремент.
26 авг 13, 18:29    [14757278]     Ответить | Цитировать Сообщить модератору
 Re: Trigger for insert  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Kusanagi
А при вставке пропустить одно поле? Ну , к примеру, если это автоинкремент.


Перечислить необходимые для заполнения поля.
26 авг 13, 18:31    [14757283]     Ответить | Цитировать Сообщить модератору
 Re: Trigger for insert  [new]
Kusanagi
Member

Откуда: от верблюда
Сообщений: 22
Всем спасибо! Плохо синтаксис просто знаю.
26 авг 13, 18:35    [14757310]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить