powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / тригер
15 сообщений из 15, страница 1 из 1
тригер
    #38732972
marvel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
CREATE TRIGGER Lg_FB_USR_I FOR FB_TBL
AFTER INSERT 
AS BEGIN 
IF (NEW.EXTERNAL_NUM IS NULL) AND (SELECT COUNT(U_LOG) FROM FB_PARAM WHERE U_LOG = 1) > 0 THEN
 INSERT INTO TBL_TRG (KEY_VAL,TNAME,ACT,DT,STATE) VALUES (NEW.ID,'FB_TBL','I','NOW',0);
END



почему то не работает тригер из за добавления условия AND (SELECT COUNT(U_LOG) FROM FB_PARAM WHERE U_LOG = 1)
как правильно написать?
СПАСИБО.
...
Рейтинг: 0 / 0
тригер
    #38732987
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marvel
Код: sql
1.
2.
3.
4.
5.
6.
CREATE TRIGGER Lg_FB_USR_I FOR FB_TBL
AFTER INSERT 
AS BEGIN 
IF (NEW.EXTERNAL_NUM IS NULL) AND (SELECT COUNT(U_LOG) FROM FB_PARAM WHERE U_LOG = 1) > 0 THEN
 INSERT INTO TBL_TRG (KEY_VAL,TNAME,ACT,DT,STATE) VALUES (NEW.ID,'FB_TBL','I','NOW',0);
END



почему то не работает тригер из за добавления условия AND (SELECT COUNT(U_LOG) FROM FB_PARAM WHERE U_LOG = 1)
как правильно написать?
СПАСИБО.

если не работает означает что в TBL_TRG не вставляются записи то
значит SELECT COUNT(U_LOG) FROM FB_PARAM WHERE U_LOG = 1 возвращает 0
и следовательно либо нет записей попадающих под условие либо во всех этих записях U_LOG=null
...
Рейтинг: 0 / 0
тригер
    #38732993
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marvel,

Замени на:
a=(SELECT count.... );
if (...) and (a>0)
...
Рейтинг: 0 / 0
тригер
    #38732994
marvel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,

да это понятно, я просто в Firebird мало знаком с синтаксисом, сам то он правильный?
...
Рейтинг: 0 / 0
тригер
    #38732995
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMaster,

недописал ;) И проверь в отладчике, что в A попадает
...
Рейтинг: 0 / 0
тригер
    #38733001
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marvelm7m,

да это понятно, я просто в Firebird мало знаком с синтаксисом, сам то он правильный?
Раз на этапе компиляции не послал значит правильный
...
Рейтинг: 0 / 0
тригер
    #38733003
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mmarvelm7m,

да это понятно, я просто в Firebird мало знаком с синтаксисом, сам то он правильный?
Раз на этапе компиляции не послал значит правильный

И в догонку если "да это понятно" то что мешает просто выполнить
SELECT COUNT(U_LOG) FROM FB_PARAM WHERE U_LOG = 1
и посмотреть результат
...
Рейтинг: 0 / 0
тригер
    #38733005
marvel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mmarvelm7m,

да это понятно, я просто в Firebird мало знаком с синтаксисом, сам то он правильный?
Раз на этапе компиляции не послал значит правильный

ругается на АND
...
Рейтинг: 0 / 0
тригер
    #38733014
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marvel я просто в Firebird мало знаком с синтаксисом
В таком случае я настоятельно рекомендую изучить Language Reference. В особенности
внимательно - синтаксическую диаграмму оператора IF.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
тригер
    #38733015
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скобок не хватает
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
тригер
    #38733021
marvel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийскобок не хватает


так тоже ругается на AND
Код: sql
1.
IF (NEW.EXTERNAL_NUM IS NULL) AND ((SELECT COUNT(U_LOG) FROM FB_PARAM WHERE U_LOG = 1) > 0) THEN
...
Рейтинг: 0 / 0
тригер
    #38733079
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marvel
Код: sql
1.
IF (NEW.EXTERNAL_NUM IS NULL) AND (SELECT COUNT(U_LOG) FROM FB_PARAM WHERE U_LOG = 1) > 0 THEN

Когда победите в войне со скобками, рассмотрите также вариант замены "(SELECT COUNT(U_LOG) FROM FB_PARAM WHERE U_LOG = 1) > 0" на "exists(select * from fb_param where u_log=1)".
Я понимаю, что fb_param - скорее всего таблица каких-то "глобальных настроек", которая почти не меняется. Но проверку существования записи через count делать не нужно.
...
Рейтинг: 0 / 0
тригер
    #38733134
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
marvelМимопроходящийскобок не хватает


так тоже ругается на AND
Код: sql
1.
IF (NEW.EXTERNAL_NUM IS NULL) AND ((SELECT COUNT(U_LOG) FROM FB_PARAM WHERE U_LOG = 1) > 0) THEN



надо
if (логическое_выражение) then
и никак не
if логическое_выражение then
...
Рейтинг: 0 / 0
тригер
    #38733926
WildSery
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterИ проверь в отладчике, что в A попадаетВ каком именно отладчике проверить?
...
Рейтинг: 0 / 0
тригер
    #38733973
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WildSery,

Правоверный IBE ессно.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / тригер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]