Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Триггер с параметрами
|
|||
|---|---|---|---|
|
#18+
Не создается какого-то черта. Ткните носом, пожалуйста. Код: plaintext 1. 2. 3. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2005, 20:20 |
|
||
|
Триггер с параметрами
|
|||
|---|---|---|---|
|
#18+
Из документации: The trigger function must be defined before the trigger itself can be created. The trigger function must be declared as a function taking no arguments and returning type trigger. (The trigger function receives its input through a specially-passed TriggerData structure, not in the form of ordinary function arguments.) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.03.2005, 22:39 |
|
||
|
Триггер с параметрами
|
|||
|---|---|---|---|
|
#18+
Little JohnНе создается какого-то черта. Ткните носом, пожалуйста. Код: plaintext 1. 2. 3. Код: plaintext 1. Может, не character а varchar надо тип параметра задать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2005, 01:30 |
|
||
|
Триггер с параметрами
|
|||
|---|---|---|---|
|
#18+
CM HungryМожет, не character а varchar надо тип параметра задать? Ага. А еще лучше TEXT. Вы хотя бы предыдущие посты читаете? Краткий перевод: триггеная функция не может иметь параметров. Про документацию молчу - кто ж ее читает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2005, 08:29 |
|
||
|
Триггер с параметрами
|
|||
|---|---|---|---|
|
#18+
Хм.... Тогда нужно дать по башке составителям документации. На хрена они публикуют подобные фрагменты? 40.2. Trigger Functions When a function is used in a trigger, the dictionary TD contains trigger-related values. The trigger rows are in TD["new"] and/or TD["old"] depending on the trigger event. TD["event"] contains the event as a string (INSERT, UPDATE, DELETE, or UNKNOWN). TD["when"] contains one of BEFORE, AFTER, and UNKNOWN. TD["level"] contains one of ROW, STATEMENT, and UNKNOWN. TD["name"] contains the trigger name, and TD["relid"] contains the OID of the table on which the trigger occurred. If the trigger was called with arguments they are available in TD["args"][0] to TD["args"][(n-1)]. If TD["when"] is BEFORE, you may return None or "OK" from the Python function to indicate the row is unmodified, "SKIP" to abort the event, or "MODIFY" to indicate you've modified the row. Мало того, гугль выдал кучу примеров триггеров с параметрами. Ну ладно, буду копать дальше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2005, 12:19 |
|
||
|
Триггер с параметрами
|
|||
|---|---|---|---|
|
#18+
Да, кстати, знатоку документации: http://www.postgresql.org/docs/7.4/static/sql-createtrigger.html Вы ничего про параметры не заметили? Читайте внимательнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2005, 12:26 |
|
||
|
Триггер с параметрами
|
|||
|---|---|---|---|
|
#18+
Little JohnДа, кстати, знатоку документации: http://www.postgresql.org/docs/7.4/static/sql-createtrigger.html Вы ничего про параметры не заметили? Читайте внимательнее. если дон подскажет, как создать (и вызвать) в триггере ф-ю с аргументами, буду признателен. (мои попытки в plpgsql не увенчались). Возможно можно вызвать из Constraint Trigger-а (кажется тоже не получалось, но лень перепроверять). Но констрайнт триггеры - это "что-то особеннова". Без излишней надобности вряд ли стоит их создавать (руками). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.03.2005, 22:29 |
|
||
|
Триггер с параметрами
|
|||
|---|---|---|---|
|
#18+
Посыпаю голову пеплом... У меня PostgreSQL 8.0.1. Действительно, в документации фигурируют параметры триггерной функции. Тем не менее у меня ошибка такая же, как и в 1-м посте, и если первый пост подправить так Код: plaintext 1. Значица, в одном месте документации (и в реализации) отказались от параметров, а в другом месте это дело осталось как благие намерения или атавизм от одной из предыдущих версий. По большому счету они правы (не в документации!), так как эти параметры и нафик не нужны, потому как в CREATE TRIGGER их можно объявить только как константы. Кто мешает использовать константы в теле функции? А реализация как-никак упрощается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2005, 13:32 |
|
||
|
Триггер с параметрами
|
|||
|---|---|---|---|
|
#18+
мдя.. документацию надо читать а не листать... и с примерами там все ОК, в том числе и для 7.4 Во первых - TD[xxx] создаются НЕ для языка plpgsql (из постов я понял вы используете этот язык), а для plperl и\или pltcl (не помню точно, проверять детально - сами посмотрите в документации эти страницы и присмотритесь к разделу и исходнику функции) во-вторых есть отдельное описалово, как использовать триггерные функции с параметрами.. а именно create function f() returns trigger bla bla bla ' define param1 text begin bla bla bla param1=TG_ARGV[x]; bla bla bla end; ' где х - порядковый номер аргумента, начинающийся с 0 соответственно create trigger zzzzzz bla bla bla EXECUTE PROCEDURE f('15'); и в param1 у нас попадет 15 если непонятно - вам сюда. http://www.postgresql.org/docs/8.0/static/plpgsql-trigger.html между прочим по 7.4 почти та же дока, в 8.0 только приимеров больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2005, 21:08 |
|
||
|
Триггер с параметрами
|
|||
|---|---|---|---|
|
#18+
centurмдя.. документацию надо читать а не листать... и с примерами там все ОК, в том числе и для 7.4 мдя-с. если дон сразу нашли описалово, так и что ж, женилка у них больше, что ли? Не факт. Об том и вопрос был, что "стандартная" передача параметров в триггерную ф-ю не работает (в plpg). А то что она работает через то место, через которое проктолог гланды удаляет - не всякий и не враз догадается. А без подсказки опытного, или начитанного дона не враз и сыщешь в доке. т.ч. спасибо дону за наводку. И за безпримерную терпимость, с каковою он наставляет нас, лохов, на путь истины. (ybxtuj kbxyjuj?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 10:29 |
|
||
|
Триггер с параметрами
|
|||
|---|---|---|---|
|
#18+
В итоге я понял так. Триггерная функция на любом языке объявляется без параметров. В операторе CREATE TRIGGER эта функция вызывается с любым количеством параметров-строковых констант. В теле функции доступ к этим параметрам имеем в pl/pgsql - через TG_ARGV[], в pl/tcl - через $args, в pl/perl - через @{$_TD->{args}}, в pl/python - через TD["args"][], в С - через fcinfo->context->tg_trigger->tgargs ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 16:05 |
|
||
|
Триггер с параметрами
|
|||
|---|---|---|---|
|
#18+
2Асса, ничего личного, но вот я например научился всему что знаю в plpgsql исключительно по хелпу... я заглядывал во всякие умные книжки со слонами, но понятней, доступней и интуитивней материала, чем в оффициальной документации я не нашел. Может плохо искал конечно, но на любой вопрос поиск по доке выдает материалы, бегло просмотрев которые - знаешь куда копать. Может, конечно, английский страдает - тогда трудно, это да... А не самый ласковый тон - по одной причине - во втором посте Vlado дал сразу совершенно четкую наводку - где копать... автор The trigger function must be defined before the trigger itself can be created. The trigger function must be declared as a function taking no arguments and returning type trigger. ( The trigger function receives its input through a specially-passed TriggerData structure , not in the form of ordinary function arguments.) а потом все, дружно НЕ читая предыдущие сообщения, ломанулись рассуждать что не умеет и какие разработчики бяки, вводят в заблуждение.. Это и "удивило" 2vlado - абсолютно правильно.. Tip: А если еще поискать в хелпе по TG_ARGV, то найдете много интересных специальных структур для триггеров, что крайне облегчает задачи как работы с параметрами так и некоторые другие... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2005, 20:36 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=32952665&tid=2007392]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 392ms |

| 0 / 0 |
