Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.24;
Скачать: CL | DM;

Вниз

Установить генератор   Найти похожие ветки 

 
Mike Kouzmine ©   (2006-07-22 19:14) [0]

У меня часто чистится одна табличка и захотелось мне сбрасывать генератор для пк в 0 после удаления всех записей, но не получилось.
Пишу в триггере set generator vasia to 0 - ошибка мол неизвестный чар на set. Полистал книги (1) полазил по ибэйзру - не нашел. Хотя это и не важно, но просто интересно?


 
Desdechado ©   (2006-07-22 21:03) [1]

1. Нехорошая мысль - сьрасывать генератор в триггере. Лучше явной отдельной командой (или процедурой, в которой
gen_id(genName, - gen_id(genName,0))


 
Mike Kouzmine ©   (2006-07-22 22:48) [2]

Desdechado ©   (22.07.06 21:03) [1] Спасибо. Почему?


 
Johnmen ©   (2006-07-23 00:41) [3]


> Mike Kouzmine ©   (22.07.06 19:14)


Теоретически должно работать. Надо бы посмотреть тельце триггера.
И, кстати, как в триггере узнаётся, что записей нет?
А в целом, такой подход порочен. ИМХО.


 
Mike Kouzmine ©   (2006-07-23 11:01) [4]

Johnmen ©   (23.07.06 00:41) [3]
Суть - импорт из 1с. Перед импортом все чищу. Для красоты решил на афтерделете поставить обнуление генератора. С ходу не удалось и стало интересно. А при импорте, видимо, лучше сделать пк внутренний номер документа в 1с, если он с новым годом не начинается с 0.

а в тельце только set generator


 
Mike Kouzmine ©   (2006-07-23 11:03) [5]

только сейчас дошло, что при массовом удолении триггер срабатывает столько раз, сколько записей. Или нет?


 
Anatoly Podgoretsky ©   (2006-07-23 11:29) [6]

Если триггер ON DELETE то конечно каждый раз.


 
Mike Kouzmine ©   (2006-07-23 11:33) [7]

Понятно. Действительно бредовая идея.


 
sniknik ©   (2006-07-23 11:34) [8]

а как удаляеш?
по идее не должно, во всяком случае  в mssql так, т.е. если конечно удаление типа while not xxquery.isempty do xxquery.delete; то тогда на каждое удаление сработает, если же запросом "удалить все из таблици" то только раз.
не думаю что в ib в этом плане есть отличия.


 
sniknik ©   (2006-07-23 11:35) [9]

> Если триггер ON DELETE то конечно каждый раз.
серьезно? так отличается?


 
Mike Kouzmine ©   (2006-07-23 11:45) [10]

sniknik ©   (23.07.06 11:34) [8] За раз.


 
Anatoly Podgoretsky ©   (2006-07-23 11:53) [11]

Ты хочешь сказать, что у меня не будет отрабатывать триггер при удалении каждой записи, в котором например ведется лог удаления, так это не так или ты имеешь в виду, что удаленные за раз записи находятся в deleted.
Какое то абстрактное обсуждение, что то как то удаляется, неизвестно с какими триггерами. Тут поле для фантазирования весьма большое, можно наговорить с три бочки огурцов.


 
sniknik ©   (2006-07-23 12:25) [12]

Anatoly Podgoretsky ©   (23.07.06 11:53) [11]
это кому мне?
если мне, то хочу сказать, что тригер срабатывает на команду, а не на запись, поэтому при удалении с клиента по одной записи и срабатываний будет столько же, при общем запросе на удаление с условием на несколько записей, и срабатывание будет одно, что именно удаляется, это уже, вот в этой самой виртуальной таблице deleted надо смотреть.

только вот не уверен в том что тут в ib нет координальных отличий от mssql-я. (хотя с чего бы им быть? вроде это основы)

Mike Kouzmine ©   (23.07.06 11:45) [10]
sniknik ©   (23.07.06 11:34) [8] За раз.
спасибо, я уже тоже пообедал.

p.s. второе предложение из [11] это уж точно к тебе.... ;)


 
Mike Kouzmine ©   (2006-07-23 12:28) [13]

sniknik ©   (23.07.06 12:25) [12] Да я не претендую на обсуждение идеи, которая и мной признана бредовой. Но если хотите...


 
sniknik ©   (2006-07-23 13:02) [14]

Mike Kouzmine ©   (23.07.06 12:28) [13]
не, я не хочу. я вообще отвечал на [5] а не обсуждал идею. (причем с оговоркой  что это для mssql и возможно скорее всего и для ib тоже)

и потом, в абстрактных обсуждениях участвовать это мазохизм... ;)


 
Anatoly Podgoretsky ©   (2006-07-23 13:04) [15]

sniknik ©   (23.07.06 12:25) [12]
Конечно не тебе, мне просто больно от такого ведения дисскуссии.


 
Anatoly Podgoretsky ©   (2006-07-23 13:05) [16]

Mike Kouzmine ©   (23.07.06 12:28) [13]
Подробности положено приводить, тексты скриптов, запросов, триггеров, образцы записей. Тогда обсуждение будет более конструктивным.


 
Desdechado ©   (2006-07-23 13:42) [17]

В IB\FB есть только один тип триггеров, срабатывающий (вне зависимости от вызвавшей его команды) на каждую запись.
В Оракле, например, есть больше видов триггеров (даже на системные события типа логина). Например, аналог IB-триггеров явно называется FOR EACH ROW - это строчные триггеры. Есть триггеры табличные, они срабатывают один раз на команду. Например, DELETE FROM tabl вызовет такой триггер один раз (строчный же вызовется для каждой строки).

Какие триггеры есть в скуле, сказать не берусь, не знаю.

Поэтому похоже, что обсуждение тут прошло о разных вещах под общим названием триггеры. Но название - единственное, что объединяет эти понятия.


 
Mike Kouzmine ©   (2006-07-23 21:26) [18]

Спасибо ребят, много информации получил. А то года три в руки шашек не брал. Забыл как ходить. 2006 понравился.



Страницы: 1 вся ветка

Текущий архив: 2006.09.24;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.049 c
1-1155552420
Леонид Федьков
2006-08-14 14:47
2006.09.24
Программирование служб Windows на Delphi


15-1157554581
Pazitron_Brain
2006-09-06 18:56
2006.09.24
Кто-нибудь печатает большие книги


1-1155502154
FireMan_Alexey
2006-08-14 00:49
2006.09.24
Вопрос по поводу Hook-a


15-1157228424
Chort
2006-09-03 00:20
2006.09.24
Разогнать видеокарту


2-1157225031
Keni
2006-09-02 23:23
2006.09.24
файл в EXE