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

Откуда:
Сообщений: 9
Заранее извиняюсь, что перекладываю свою работу на вас, но знаний у меня по этой теме очень мало, а сделать надо быстро и времени на обучение особо нет.
Sql 2008 rtm
Задача следующая.
Я так понимаю, что это триггер, который будет реагировать на insert.
Необходимо перенести данные, которые были добавлены последними, с одной таблицы Points.dbo.U1 в другую Runtime.dbo.Analog. И попутно их переименовать с U1.P1 в P1.
Не судите строго, если я написала какие-то глупости, до сегодняшнего дня с этим не сталкивалась. Литературу и форум смотрела - не помогло((

CREATE TRIGGER LoadData 
   ON  Points.dbo.U1 
   AFTER  INSERT
AS 

BEGIN
SELECT * FROM inserted 
     INSERT INTO Runtime.dbo.AnalogHistory (DateTime,Point_id,Value)
  
END
24 сен 12, 13:49    [13212754]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
Glory
Member

Откуда:
Сообщений: 104760
INSERT INTO Runtime.dbo.AnalogHistory (DateTime,Point_id,Value)
SELECT <список нужных полей> FROM inserted
24 сен 12, 13:51    [13212771]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
gvenihvivar
Member

Откуда:
Сообщений: 9
Ошибок при проверке синтаксиса не выдает, но триггер не выполняется. Данные добавляются 4 строки каждую секунда, а таблица, в которую они должны копироваться остается пустой
24 сен 12, 14:13    [13212934]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
Glory
Member

Откуда:
Сообщений: 104760
gvenihvivar
Ошибок при проверке синтаксиса не выдает, но триггер не выполняется.

Откуда вы знаете, что триггер именно _не выполняется_ ?
Вы как то мониторите все, что происходит на сервере ?

gvenihvivar
Данные добавляются 4 строки каждую секунда, а таблица, в которую они должны копироваться остается пустой

Откуда вы знаете, куда именно и как именно добавляется ?
Вы как то мониторите все, что происходит на сервере ?
24 сен 12, 14:16    [13212959]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
gvenihvivar
Member

Откуда:
Сообщений: 9
В Sql Managerment Studio выбираю 1000 строк из каждой таблицы. В таблицу, из которой берутся данные, каждую секунду появляются новые, а вот в другая таблица, при выборке 1000, остается пустой
24 сен 12, 14:46    [13213195]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
А у Runtime.dbo.AnalogHistory есть триггеры?
А то может, там путой триггер INSTEAD OF INSERT
Структуру не показываете, версию сервера скрываете...
Может быть всё, что угодно
24 сен 12, 14:50    [13213219]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
gvenihvivar
Member

Откуда:
Сообщений: 9
Если бы я еще знала, что показывать)))
Триггера в Runtime и правда нет.
А почему именно INSTEAD OF INSERT. Это же означает "вместо вставленного"
24 сен 12, 14:54    [13213258]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
gvenihvivar
Member

Откуда:
Сообщений: 9
Ничего, кроме написанного выше триггера, нет.
Необходимо еще какие-то?
И что с переименованием делать?
Возможно ли это вообще?
24 сен 12, 14:57    [13213281]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
ВладимирК
Member

Откуда:
Сообщений: 46
Извините, что поднял тему...
Если в триггере после вставки есть необходимость вставить данные в подчиненые таблицы
Какова схема действий?
У меня триггер на основной таблице и ХП в которую передается ИД записи основной таблицы.
ХП независимо от триггера работает на ура. Но вызов в триггере в подчиненные таблицы записи не добавлят:(
2 ноя 12, 11:36    [13413140]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
Glory
Member

Откуда:
Сообщений: 104760
ВладимирК
Но вызов в триггере в подчиненные таблицы записи не добавлят:(

В программировании есть такие понятия - отладка, логирование, трассировка
Чем из это вы воспользовались для выяснения причины такого поведения процедуры ?
2 ноя 12, 11:44    [13413221]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
ВладимирК
Member

Откуда:
Сообщений: 46
Glory,
Признаюсь, я еще не "копенгаген", но надеюсь, что не "осло":)
Вопрос задал...и пытаюсь в Профайлере засечь, но пока не разобрался...
2 ноя 12, 12:13    [13413453]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
ВладимирК
Member

Откуда:
Сообщений: 46
Glory,
А может быть сложность в том, что вставка выполняется в соседнюю абсолютно идентичную по структуре БД
и т.е. разница в том "кто" эту ХП вызывает?
2 ноя 12, 12:17    [13413478]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
Glory
Member

Откуда:
Сообщений: 104760
ВладимирК
А может быть сложность в том, что вставка выполняется в соседнюю абсолютно идентичную по структуре БД
и т.е. разница в том "кто" эту ХП вызывает?

Нет, скорее всего здесь влият то, что Луна сейчас в созвездии Тельца. А на рынке редких металлов наметилась тендеция для возникновения потенциальных возможностей для роста цен в долгосрочной перспективе.

ЗЫ
В случае системных проблем сервер генерирует сообщение об ошибке
В случае логических проблем создатель кода ищет эту ошибку
2 ноя 12, 12:24    [13413513]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2551
gvenihvivar
Ничего, кроме написанного выше триггера, нет.
Необходимо еще какие-то?
И что с переименованием делать?
Возможно ли это вообще?
Вам Glory указал во втором посте темы, как должен выглядеть Ваш INSERT. Ну и так, на всякий случай, SELECT должен содержать 3 поля, соответствующих INSERT'у по типам данных.
2 ноя 12, 13:22    [13413945]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
ВладимирК
Member

Откуда:
Сообщений: 46
[quot Glory]
ВладимирК
ЗЫ
В случае системных проблем сервер генерирует сообщение об ошибке
В случае логических проблем создатель кода ищет эту ошибку


ЗЫ1 Сообщений сервера об ошибках нет, но и результата нет.
ЗЫ2:
- При вызове ХП из MMC Профайлер показывает - все ОК (в т.ч. работу курсора).
- При вводе записи (из интерфейса НЕТ-клиента) в Профайлер видно включается триггер, вызывает ХП с ИД записи, ХП работает до Курсора, который открывает, тут же закрывает. Вот выжимка из профайлера:
DECLARE crSubjectAddress CURSOR LOCAL FORWARD_ONLY READ_ONLY FOR
OPEN crSubjectAddress
WHILE 1=1
FETCH NEXT FROM crSubjectAddress INTO @Let, @nSubjectID, @nAddressID, @nFindString
IF @@FETCH_STATUS<>0
BREAK
CLOSE crSubjectAddress
DEALLOCATE crSubjectAddress
2 ноя 12, 17:06    [13415912]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
Glory
Member

Откуда:
Сообщений: 104760
ВладимирК
Курсора, который открывает, тут же закрывает.

Наверно потому, что выполняется условие IF @@FETCH_STATUS<>0 BREAK ???
2 ноя 12, 17:11    [13415950]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
ВладимирК
Member

Откуда:
Сообщений: 46
Курсор из #Таблицы...в этом причина?
2 ноя 12, 17:14    [13415968]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
ВладимирК
Member

Откуда:
Сообщений: 46
Строчка заполнения курсора в Профайлере не наблюдается:
DECLARE crSubjectAddress CURSOR LOCAL FORWARD_ONLY READ_ONLY FOR
SELECT LetterID, ObjectID, AddressID, FindString from #table
OPEN crSubjectAddress
WHILE 1=1
BEGIN
FETCH NEXT FROM crSubjectAddress INTO @Let, @nSubjectID, @nAddressID, @nFindString
IF @@FETCH_STATUS<>0 BREAK
2 ноя 12, 17:19    [13415990]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
ВладимирК
Member

Откуда:
Сообщений: 46
ВладимирК
Строчка заполнения курсора в Профайлере не наблюдается:
DECLARE crSubjectAddress CURSOR LOCAL FORWARD_ONLY READ_ONLY FOR
SELECT LetterID, ObjectID, AddressID, FindString from #table
OPEN crSubjectAddress
WHILE 1=1
BEGIN
FETCH NEXT FROM crSubjectAddress INTO @Let, @nSubjectID, @nAddressID, @nFindString
IF @@FETCH_STATUS<>0 BREAK


прошу прощения! Все на месте, глаза мои куда-то долбятся:)
2 ноя 12, 17:22    [13416014]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
ВладимирК
Member

Откуда:
Сообщений: 46
Glory
Наверно потому, что выполняется условие IF @@FETCH_STATUS<>0 BREAK ???


Очевидно да! Но я не могу сообразить почему в случае вызова ХП из MMC с курсор заполнен, а вызове ХП из триггера - нет:(
Наставьте плиз на путь истинный!
2 ноя 12, 17:39    [13416120]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
Glory
Member

Откуда:
Сообщений: 104760
ВладимирК
курсор заполнен, а вызове ХП из триггера - нет

Наверное потому, что курсор берет данные из таблицы #table , а не из воздуха ?
2 ноя 12, 17:41    [13416131]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
ВладимирК
Member

Откуда:
Сообщений: 46
Glory
ВладимирК
курсор заполнен, а вызове ХП из триггера - нет

Наверное потому, что курсор берет данные из таблицы #table , а не из воздуха ?


Перед курсором в ХП есть запрос с заполнением #table
А временная таблица курсору в таком случае не видна?
2 ноя 12, 17:49    [13416211]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
Glory
Member

Откуда:
Сообщений: 104760
ВладимирК
Перед курсором в ХП есть запрос с заполнением #table

Как вы проверили, что в эту таблицу что-то паполо ?

ВладимирК
А временная таблица курсору в таком случае не видна?

Если бы таблицы не было, то была бы серверная ошибка
2 ноя 12, 17:54    [13416262]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
ВладимирК
Member

Откуда:
Сообщений: 46
Glory
ВладимирК
Перед курсором в ХП есть запрос с заполнением #table

Как вы проверили, что в эту таблицу что-то паполо ?

ВладимирК
А временная таблица курсору в таком случае не видна?

Если бы таблицы не было, то была бы серверная ошибка


Если честно, то я не знаю как, кроме того, что при вызове ХП в ММС, точно такие-же условия и врем. таблица не пустая
2 ноя 12, 17:58    [13416289]     Ответить | Цитировать Сообщить модератору
 Re: Помогите, пожалуйста, с триггером на вставку  [new]
Glory
Member

Откуда:
Сообщений: 104760
ВладимирК
Если честно, то я не знаю как

Это и называется - отладка, логирование, трассировка
2 ноя 12, 18:00    [13416304]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить