|
|
|
Триггеры
|
|||
|---|---|---|---|
|
#18+
Существует таблица title_nakl. В этой таблице есть поля clos и data. Нужно при изменении поля clos с False на True чтобы менялась дата. Получается, что триггер на обновление сработает 2 раза, причем одно обновление вызовет другое (что я думаю не правильно). Подскажите, пожалуйста, как поступить в данной ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 09:17:15 |
|
||
|
Триггеры
|
|||
|---|---|---|---|
|
#18+
Вопрос получился 2 раза. Это у меня Explorer глючит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 09:26:55 |
|
||
|
Триггеры
|
|||
|---|---|---|---|
|
#18+
Если я правильно понял (вопрос сформулирован туманно), то: в триггере надо: if ( (old.clos=false) and (new.clos=true) ) then new."date" = current_date; Замечание: постарайтесь избегать в названиях таблиц, полей и проч. зарезервированных слов, таких как date. Вообще, конечно, имена могут быть любыми, но тогда не избежать гемора с повсеместным использованием кавычек. Это же замечание относится и к регистру. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 09:27:12 |
|
||
|
Триггеры
|
|||
|---|---|---|---|
|
#18+
Получается, что триггер на обновление сработает 2 раза Показал бы тригер то. Почему 2 раза? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 09:32:39 |
|
||
|
Триггеры
|
|||
|---|---|---|---|
|
#18+
У меня не получается через new.data=current_date. Ничего не изменяется. Поэтому попробовал через update. И триггер получился с кучей условий. Может что-то не так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 09:36:25 |
|
||
|
Триггеры
|
|||
|---|---|---|---|
|
#18+
е-мае диалект базы какой? скрипт таблицы? текст самого триггера? тут же не телепаты все... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 09:50:36 |
|
||
|
Триггеры
|
|||
|---|---|---|---|
|
#18+
Диалект 3. Скрипт: CREATE TABLE TITLE_NAKL ( ID_TITLE INTEGER NOT NULL, OTPR INTEGER NOT NULL, POL INTEGER NOT NULL, DATE_NAKL TIMESTAMP, NUM_ZAK INTEGER, KOL_NAIM INTEGER DEFAULT 0 NOT NULL, TYPE_NAKL INTEGER NOT NULL, ITOG_SUM NUMERIC(12,2) DEFAULT 0.0, CLOS BOOLEAN DEFAULT false ); Сам триггер: SET SQL DIALECT 3; SET NAMES WIN1251; SET TERM ^ ; CREATE TRIGGER UPD_NAKL FOR TITLE_NAKL ACTIVE BEFORE UPDATE POSITION 0 AS declare variable izmpart integer; declare variable izmkol integer; declare variable izmkod integer; declare variable is_pol boolean; begin if (old.clos=true) then exception err_del_nakl; */Сообщение, что накладная закрыта else begin */Проверка по типу накладной, является ли склад отправителем select skl_pol from nakl_type where type_id=old.type_nakl into :is_pol; if (is_pol=false) then */ если склад отправитель begin */проверка, закрывается ли накладная if (old.clos=false and new.clos=true) then */если да begin */ изменяем остаток по каждой позиции накладной for select num_part, kodt, kolvo from body_nakl where id_title=old.id_title into :izmpart, :izmkod, :izmkol do update reg_part set rezerv=rezerv-:izmkol, kolvo=kolvo-:izmkol where num_part=:izmpart and kodt=:izmkod; new.date_nakl=current_timestamp; end end end end ^ SET TERM ; ^ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 10:08:19 |
|
||
|
Триггеры
|
|||
|---|---|---|---|
|
#18+
вот строчка new.data=current_timestamp ничего не изменяет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 10:10:06 |
|
||
|
Триггеры
|
|||
|---|---|---|---|
|
#18+
версию Interbase в студию CLOS BOOLEAN DEFAULT false - текст boolean приведи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 10:24:15 |
|
||
|
Триггеры
|
|||
|---|---|---|---|
|
#18+
Для меня IB новинка. Может быть у меня IB какой-то обрезанный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 10:38:28 |
|
||
|
Триггеры
|
|||
|---|---|---|---|
|
#18+
попробуй Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 10:59:26 |
|
||
|
Триггеры
|
|||
|---|---|---|---|
|
#18+
Роман Новичеквот строчка new.data=current_timestamp ничего не изменяет current_timestamp - время начала выполнения request'а, а не текущее new.data = 'NOW' не пробовал ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.06.2004, 11:03:09 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=465&tid=1578391]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
35ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 318ms |

| 0 / 0 |
