Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Триггерная функция
|
|||
|---|---|---|---|
|
#18+
Есть триггерная функция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. А вообще хотелось бы на Си функцию написать, только не могу разобраться с этим, привык libpq использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 12:31 |
|
||
|
Триггерная функция
|
|||
|---|---|---|---|
|
#18+
postuserТребуется каким-то образом проверить, успешно ли прошло обновление. И если не успешно (не выполнено условие WHERE), то должен делаться INSERT table1 (id) VALUES (new.p3). Как это сделать?В EXCEPTION WHEN что-то THEN не нашел, какое условие прописать после when. А вообще хотелось бы на Си функцию написать, только не могу разобраться с этим, привык libpq использовать. А почему не использовать IF NOT FOUND THEN INSERT ... END IF ; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 14:09 |
|
||
|
Триггерная функция
|
|||
|---|---|---|---|
|
#18+
Пробывал уже, срабатывает в любом случае (хоть UPDATE прошел, хоть нет). Как я понял, это для SELECT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 14:22 |
|
||
|
Триггерная функция
|
|||
|---|---|---|---|
|
#18+
Если вставляю после UPDATE Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 14:26 |
|
||
|
Триггерная функция
|
|||
|---|---|---|---|
|
#18+
Может так? Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 14:42 |
|
||
|
Триггерная функция
|
|||
|---|---|---|---|
|
#18+
postuserПробывал уже, срабатывает в любом случае (хоть UPDATE прошел, хоть нет). Как я понял, это для SELECT. Покажи DDL самого триггера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 14:44 |
|
||
|
Триггерная функция
|
|||
|---|---|---|---|
|
#18+
Сам триггер: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 15:00 |
|
||
|
Триггерная функция
|
|||
|---|---|---|---|
|
#18+
postuserПробывал уже, срабатывает в любом случае (хоть UPDATE прошел, хоть нет). Как я понял, это для SELECT.странные вещи вы расказываете, однако. могабыть что-то не то пробовали? я с перепугу даже доку перечитал - все на месте докаThe second method to determine the effects of a command is to check the special variable named FOUND, which is of type boolean. FOUND starts out false within each PL/pgSQL function call. It is set by each of the following types of statements: A SELECT INTO statement sets FOUND true if it returns a row, false if no row is returned. A PERFORM statement sets FOUND true if it produces (and discards) a row, false if no row is produced. UPDATE, INSERT, and DELETE statements set FOUND true if at least one row is affected, false if no row is affected. A FETCH statement sets FOUND true if it returns a row, false if no row is returned. A FOR statement sets FOUND true if it iterates one or more times, else false. This applies to all three variants of the FOR statement (integer FOR loops, record-set FOR loops, and dynamic record-set FOR loops). FOUND is set this way when the FOR loop exits; inside the execution of the loop, FOUND is not modified by the FOR statement, although it may be changed by the execution of other statements within the loop body. FOUND is a local variable within each PL/pgSQL function; any changes to it affect only the current function. "Ниччего не понимаю" (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 15:09 |
|
||
|
Триггерная функция
|
|||
|---|---|---|---|
|
#18+
а рекомендованный разработчиками метод ведения итогов (исключительно в умолчательном режиме READ COMMITED) рассматривался надысь здесь: вот оно . случай просто с FOUND приведет к отлупу (если проектировали не левой задней, и есть ключ в накопит. табличке) в том редком случае, когда конкурент успеет вставить свою запись промеж вашей попыки апдейта, и инсерта в триггере ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 15:19 |
|
||
|
Триггерная функция
|
|||
|---|---|---|---|
|
#18+
postuserЕсли вставляю после UPDATE Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. ПОДСКАЗКА: Если вам результат СЕЛЕКТА нафик не сдался, то используйте PERFORM. Вот таким образом : Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2006, 17:08 |
|
||
|
Триггерная функция
|
|||
|---|---|---|---|
|
#18+
4321 случай просто с FOUND приведет к отлупу (если проектировали не левой задней, и есть ключ в накопит. табличке) в том редком случае, когда конкурент успеет вставить свою запись промеж вашей попыки апдейта, и инсерта в триггере Есть неплохая идея для таких целей лочить табличку на запись. "Во избежание". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2006, 16:24 |
|
||
|
Триггерная функция
|
|||
|---|---|---|---|
|
#18+
Andrey Daeron 4321 случай просто с FOUND приведет к отлупу (если проектировали не левой задней, и есть ключ в накопит. табличке) в том редком случае, когда конкурент успеет вставить свою запись промеж вашей попыки апдейта, и инсерта в триггере Есть неплохая идея для таких целей лочить табличку на запись. "Во избежание". Лочить табличку хороший метод решающий большенство подобных проблемм (а то и все), но, за счет понижения производительности. Если данный код выполняеться не часто, и не так критичен для производительности, то все ок. Но, imho, способ с обработкой эксепшенса более производителен (опятьтакиже, как в той ссылке, что дал 4321). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2006, 17:19 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=306&tid=2005830]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 256ms |
| total: | 421ms |

| 0 / 0 |
