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

Откуда:
Сообщений: 172
Добрый день уважаемые.
Есть таблица ID (автоинкремент, ключ) и Name (Текст)
Мне нужно чтобы при добавлении новой записи с новым именем, автоматически добавлялись еще записи с модифицированным именем.
К примеру после вставки строки где Name - test, должны добавиться строки #test, @test

Как я понял в триггере установленном на insert этой же таблицы такое реализовать не удасться?
18 окт 12, 09:42    [13338259]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли способ добавлять строки в таблицу в триггере, если он установлен на эту же таблицу  [new]
iap
Member

Откуда: Москва
Сообщений: 47198
dimon71
Добрый день уважаемые.
Есть таблица ID (автоинкремент, ключ) и Name (Текст)
Мне нужно чтобы при добавлении новой записи с новым именем, автоматически добавлялись еще записи с модифицированным именем.
К примеру после вставки строки где Name - test, должны добавиться строки #test, @test

Как я понял в триггере установленном на insert этой же таблицы такое реализовать не удасться?
Из чего Вы это поняли?
Очень даже можно.
Надо только озаботиться повторным вызовом этого же триггера.
Во-первых, можно запретить рекурсивные вызовы триггеров (Database->Options->Recursive Triggers->Enabled).
Во-вторых, в триггере можно проверять уровень вложенности этого триггера (TRIGGER_NESTLEVEL())
18 окт 12, 09:53    [13338325]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли способ добавлять строки в таблицу в триггере, если он установлен на эту же таблицу  [new]
dimon71
Member

Откуда:
Сообщений: 172
SQL 2000
У меня такой триггер просто игнорируется. Не работает никак.
Т.е если в триггере указана запись в эту же таблицу, то триггер просто игнорируется. В другую таблицу пишет.

Я и подумал, что по логике все верно. Погуглил - пишут о похожей картине.

Ну раз есть другое мнение - покопаюсь.
Спасибо.
18 окт 12, 09:58    [13338363]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли способ добавлять строки в таблицу в триггере, если он установлен на эту же таблицу  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2576
dimon71, приведите код Вашего триггера, а там видно будет...
18 окт 12, 10:08    [13338436]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли способ добавлять строки в таблицу в триггере, если он установлен на эту же таблицу  [new]
iap
Member

Откуда: Москва
Сообщений: 47198
dimon71
SQL 2000
У меня такой триггер просто игнорируется. Не работает никак.
Т.е если в триггере указана запись в эту же таблицу, то триггер просто игнорируется. В другую таблицу пишет.

Я и подумал, что по логике все верно. Погуглил - пишут о похожей картине.

Ну раз есть другое мнение - покопаюсь.
Спасибо.
Триггер, вообще-то, можно отключать и включать (DISABLE/ENABLE)
Что там у Вас, отсюда не видно
18 окт 12, 10:19    [13338527]     Ответить | Цитировать Сообщить модератору
 Re: Есть ли способ добавлять строки в таблицу в триггере, если он установлен на эту же таблицу  [new]
dimon71
Member

Откуда:
Сообщений: 172
Все заработало. Мои бока. Прошу прощения за беспокойство.
Спасибо отозвавшимся.
Просто пытался защититься от рекурсивного цикла этого триггера и перестарался.
18 окт 12, 10:38    [13338689]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить