Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как правильно в RULE ON INSERT получить значение поля типа SERIAL?
|
|||
|---|---|---|---|
|
#18+
Описание проблемы: Есть обобщающая таблица : Код: plaintext 1. 2. 3. 4. 5. 6. 7. Есть таблица с конкретными данными: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Для таблицы device_radio определено правило ON INSERT: Код: plaintext 1. 2. 3. В документации написано: For ON INSERT rules, the original query (if not suppressed by INSTEAD) is done before any actions added by rules. This allows the actions to see the inserted row(s). Т.е. если я правильно понимаю написанное, значение для поля device_radio.id сгенерированное при добавлении записи должно быть доступно в правиле и должно сохраниться в таблице device_basic. Но этого не происходит. Если в таблицу device_radio записывается значение id = 1, то в таблицу device_basic записывается значение id = 2 и так далее. Можно предположить, что в правиле значение new.id is null. Помогите пожалуйста разобраться с проблемой. Как в таблицу device_basic сохранить тоже значение id, что и в таблице device_radio? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2006, 17:48 |
|
||
|
Как правильно в RULE ON INSERT получить значение поля типа SERIAL?
|
|||
|---|---|---|---|
|
#18+
кажется вы наступили на типовой грабель с неатомарностью руля. Там где вы пишете new.id постгресс по новой лезет за "значением" - т.е. вызывает некствал(секвенса) (т.е. делает новый вызов, следующий за тем, который он вызвал при вставке дефолта в собственно табличку). Разрулить можно видимо функцией... надо посмотреть Вам удобнее это написать либо: 1. в виде обычного триггера 2. более красиво для постгреса - юзать центральную табличку "звезды" как предка к своим детям (...INHERIT...). при этом ничего в нее вставлять не придется. но 2 минуса - 1. не поддерживается таковая фича другими субд-ами, и 2. придется кажется лезть в contrib за специфич. ф-ями для сквозных индексов или ключей по "всей грозди" наследничков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 17:07 |
|
||
|
Как правильно в RULE ON INSERT получить значение поля типа SERIAL?
|
|||
|---|---|---|---|
|
#18+
Спасибо за совет. Видимо самый лучший вариант сделать все в триггерах. Пользы от наследования таблиц практически никакой. Интересно было бы посмотреть на решения в которых эффективно применяется наследование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2006, 17:54 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=329&tid=2006733]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 324ms |

| 0 / 0 |
