Я изменил запрос немного (а) включить в список выбора tb.datakey
, и (б) опустить условие на tabid
(так он выбирает любой триггер для любой таблицы):
SELECT tr.tabid, tr.trigid, tr.trigname, tr.owner, tb.datakey, tb.data
FROM systriggers tr, systrigbody tb
WHERE {tr.tabid = ?}
{AND} tr.trigid = tb.trigid
AND tb.datakey != 'B' AND tb.datakey != 'H'AND tb.datakey !='S'
ORDER BY tb.datakey DESC;
I побежал на базе груженого с триггерами, и часть продукции была:
124|49|u_timerecord|wtsdba|D|create trigger "wtsdba".u_timerecord update on "wtsdba".timerecord
124|50|d_timerecord|wtsdba|D|create trigger "wtsdba".d_timerecord delete on "wtsdba".timerecord
125|51|u_wi_buglist|wtsdba|D|create trigger "wtsdba".u_wi_buglist update on "wtsdba".wi_buglist
127|52|u_wi_problem|wtsdba|D|create trigger "wtsdba".u_wi_problem update on "wtsdba".wi_problem
128|53|u_wi_task|wtsdba|D|create trigger "wtsdba".u_wi_task update on "wtsdba".wi_task
106|15|d_workstate|wtsdba|A| before\ (\ execute procedure "jleffler".wtsdba_del('WorkState'));
106|14|u_workstate|wtsdba|A| before\ (\ execute procedure "jleffler".wtsdba_upd('WorkState'));
114|29|u_sec_action|wtsdba|A| before\ (\ execute procedure "jleffler".wtsdba_upd('SEC_Action'));
107|16|d_workitem|wtsdba|A| before\ (\ execute procedure "jleffler".wtsdba_del('WorkItem'));
115|30|u_wts_menu|wtsdba|A| before\ (\ execute procedure "jleffler".wtsdba_upd('WTS_Menu'));
Я потеряются выход, так что несколько заготовок были заменены одной заготовки. Всего было 110 линий; Я просто выбрал несколько из середины списка, где ключ данных изменился с 'D'
на 'A'
.
Это было выполнено в работе DB-Access (несколько); вы получите по существу тот же результат с DB-Access, но форматирование будет гораздо более подробным.
Из этого вы узнаете, что ваш запрос в основном звучит. Я не оспариваю, что вы видите странные результаты. Итак, вам нужно создать минимальный тестовый сценарий - простую программу Java и JDBC, которая выполняет указанный запрос или ваш исходный запрос, и который демонстрирует проблему (например, SSCCE - Short, Self-Contained, Correct Example), чтобы показать, как вы видите проблема. Тогда мы можем надеяться воспроизвести проблему. Пожалуйста, включите схему для простой таблицы с триггером на ней, чтобы мы работали с «одинаковыми» данными каталога.
Это также поможет найти версию Informix, которую вы используете. Вы должны быть в состоянии использовать:
SELECT DBINFO('version', 'full') FROM SysTables WHERE TabID = 1;
Если это не удается, потому что он не поддерживается, ваш Informix долго из поддержки. Я получил выход:
IBM Informix Dynamic Server Version 11.70.FC6
Я бегу на Mac с Mac OS X 10.7.5.
Странно! Какая версия Informix на какой платформе? Это не должно иметь никакого значения, но почему бы не 'WHERE tb.datakey IN ('A', 'D')'? Вы также должны планировать использовать явное обозначение соединения; это лучший современный стиль SQL. –
Im работает над eclipse EE в Windows 7. tbh, я не знаю версию informix. :/Я попробовал это. Также попробовал «WHERE tb.datakey NOT IN (« B »,« H »,« S »). Кажется, тоже не работает. Nothings, похоже, работает, поэтому я пришел сюда, задаваясь вопросом, возникла аналогичная проблема. – todor
Не слышал о такой проблеме. Вы пробовали запрос в DB-Access? Вы должны использовать API-интерфейс для программирования из-за '' 'placeholder. Он не должен делать никаких шансов, но. .. –