Переключение на Главную Страницу Страницы: 1 [2] 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) поможите с триггером на изменение таблички (число прочтений - 11107 )
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: поможите с триггером на изменение таблички
Ответ #15 - 28. Декабря 2007 :: 09:54
Печать  
CREATE TRIGGER TestTrig ON TestTab FOR UPDATE AS
SAVE TRANSACTION MyName
INSERT INTO TestAudit
  SELECT * FROM inserted
IF (@@error <> 0)
BEGIN
ROLLBACK TRANSACTION MyName
END

вот так не откатывает назад транзакцию почему то
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: поможите с триггером на изменение таблички
Ответ #16 - 28. Декабря 2007 :: 10:04
Печать  
Попробуй явно начть транзакцию
  
Наверх
ICQ  
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: поможите с триггером на изменение таблички
Ответ #17 - 28. Декабря 2007 :: 10:15
Печать  
где именно явно начать ее?
мне надо что бы отменилось не то что в триггере происходит и то что вызвало триггер
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: поможите с триггером на изменение таблички
Ответ #18 - 28. Декабря 2007 :: 10:21
Печать  
skom писал(а) 28. Декабря 2007 :: 10:15:
где именно явно начать ее?
мне надо что бы отменилось не то что в триггере происходит и то что вызвало триггер

Тогда тебе не нужно делать SAVE
  
Наверх
ICQ  
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: поможите с триггером на изменение таблички
Ответ #19 - 28. Декабря 2007 :: 10:43
Печать  
Nick писал(а) 28. Декабря 2007 :: 09:47:
Что есть таблица "апдейтов"?  в тригере FOR UPDATE только две системных таблицы - inserted  и deleted


_1supdts
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: поможите с триггером на изменение таблички
Ответ #20 - 28. Декабря 2007 :: 10:50
Печать  
Цитата:
Nick писал(а) 28. Декабря 2007 :: 09:47:
Что есть таблица "апдейтов"?  в тригере FOR UPDATE только две системных таблицы - inserted  и deleted


_1supdts


Это какая то служебная таблица 1с? Чего там хранится?
  
Наверх
ICQ  
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: поможите с триггером на изменение таблички
Ответ #21 - 28. Декабря 2007 :: 11:00
Печать  
в общем на данный момент то что было подсказано в начальных постах отлично срабатывает
в триггере ставишь rollback tran и никакие изменения не проходят в 1сДЖОРН и похоже в 1СУПДТС вроде тоже но это пока не подтверждено
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: поможите с триггером на изменение таблички
Ответ #22 - 28. Декабря 2007 :: 11:35
Печать  
может у тебя условие не срабатывает ? IF (@@error <> 0)
  
Наверх
ICQ  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: поможите с триггером на изменение таблички
Ответ #23 - 28. Декабря 2007 :: 12:49
Печать  
Про транзакции.

Если ты говоришь ROLLBACK TRANSACTION, то это отменяет все вышестоящие транзакции. Т.е. такой код
Код
Выбрать все
Begin Transaction
Insert into #test 1
...
Begin Transaction
Insert into #test 2
ROLLBACK Transaction

Commit Transaction
 


приведёт к тому, что таблица #test будет в итоге пустой.  С SAVE TRANSACTION играться не пробовал, но если верить таки документации, то это как раз и должно обеспечивать частичный откат транзакции. Т.е. откатится всё, что между SAVE и ROLLBACK.   Но, повторюсь, сам не пробовал.
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: поможите с триггером на изменение таблички
Ответ #24 - 28. Декабря 2007 :: 12:55
Печать  
вот такая вот фигня
Код
Выбрать все
create table #test (i int)

Begin Transaction
	Insert into #test (i) values (1)
	save transaction A
		Insert into #test (i) values (2)
	ROLLBACK Transaction A
Commit Transaction

select * from #test

drop table #test 


выдаёт ожидаемый результат - т.е. одна строка с i = 1.  Но это вне триггера.
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: поможите с триггером на изменение таблички
Ответ #25 - 28. Декабря 2007 :: 14:06
Печать  
Nick писал(а) 28. Декабря 2007 :: 10:50:
Это какая то служебная таблица 1с? Чего там хранится?


Список измененных объектов для обмена УРБД. Просто автор на это жаловался. Имеет смысл там отсекать где это происходит
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: поможите с триггером на изменение таблички
Ответ #26 - 10. Января 2008 :: 06:54
Печать  
> SELECT @User_1c = User_1c FROM dbo.users where PID = @@SPID --получим пользователя

- А можно тут поподробнее, что хранится в табличке dbo.users? Имена пользователей 1С? Откуда можно вытащить эти данные? Максимум, что смог получить - это PID из БД Master таблицы sysprocesses...  Печаль
  
Наверх
 
IP записан
 
skom
Junior Member
**
Отсутствует


"Hallo World"

Сообщений: 84
Местоположение: г.Кемерово
Зарегистрирован: 16. Января 2007
Пол: Мужской
Re: поможите с триггером на изменение таблички
Ответ #27 - 10. Января 2008 :: 08:04
Печать  
не мое мне подсказали как сделать
в базе добавил свою таблицу Users
в ней имя пользователя, pid и время входа ( на всякий случай) и при входе пользователя в 1С в эту таблицу пишется сопоставление pid и имени его пользователя в 1С.
короче таблица служит для превращения pid'a в реальное имя.
  

КонецЕсли;
Наверх
ICQ  
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: поможите с триггером на изменение таблички
Ответ #28 - 10. Января 2008 :: 08:12
Печать  
А откуда в таблицу USERS имя пользователя вставляется, вот в чем вопрос?  Озадачен
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: поможите с триггером на изменение таблички
Ответ #29 - 10. Января 2008 :: 08:14
Печать  
В SQL где можно подцепить имя пользователя 1С?
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 
ОтправитьПечать