Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
триггер vs автоинкремент
|
|||
|---|---|---|---|
|
#18+
Добрый день. Вставляю массив данных в мастер/детаил таблицы. Значения для ключевых полей берутся из последовательностей (sequence). Но первичные ключи были созданы как bigserial, таким образом nextvalue получается выборкой следующего значения из последовательности: nextval('test_id_seq'::regclass) Конечно, можно спокойно получить curval, и вставить его значение в поля -- внешние ключи. Но меня всё время беспокоит такой вопрос, а что, если в таблицу произойдёт вставка? Не логичнее всё же написать триггер, в котором проводить анализ на null, что-то вроде if new.id is null then new.id := nextval('test_id_seq') В таком случае, я смогу самостоятельно получать nextval, а затем вставлять полученное значение как в мастер, так и в детаил таблицы. На мой взгляд это правильнее. А что скажут уважаемые коллеги? Вся вставка будет происходить в теле хранимой процедуры. Нужно ли мне отказаться от автоинкрементных полей в пользу триггеров, или достаточно получать интересующее значение из curval? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2007, 10:20 |
|
||
|
триггер vs автоинкремент
|
|||
|---|---|---|---|
|
#18+
Если вставка будет полностью "на совести" хп, то зачем вообще нужен триггер? можно использовать след. достаточно прозрачный вариант с хп Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2007, 10:49 |
|
||
|
триггер vs автоинкремент
|
|||
|---|---|---|---|
|
#18+
Paramedic Но меня всё время беспокоит такой вопрос, а что, если в таблицу произойдёт вставка? Вас беспокоит, что будет если в другой транзакции добавиться еще одна запись во время между вашими INSERTom и currval'ом? Если я правильно вас понял - то забейте на свои беспокойства. А что бы забить с большей уверенностью, перечетайте доку. currval возвращает последнее значение для текущей сессии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2007, 19:08 |
|
||
|
триггер vs автоинкремент
|
|||
|---|---|---|---|
|
#18+
Вопрос в догонку а как получить новый айди записи, если он создался автоматом (в тригере)? чтобы потом его использовать в фиребирд это insert into table returning id; и потом айди использовать далее.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 09:40 |
|
||
|
триггер vs автоинкремент
|
|||
|---|---|---|---|
|
#18+
в пг с 8.2.чегото вроде бы тоже появилось (37.6.3. Executing a Query with a Single-Row Result) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2007, 10:09 |
|
||
|
триггер vs автоинкремент
|
|||
|---|---|---|---|
|
#18+
INSERT INTO table [ ( column [, ...] ) ] { DEFAULT VALUES | VALUES ( { expression | DEFAULT } [, ...] ) [, ...] | query } [ RETURNING * | output_expression [ AS output_name ] [, ...] ] поддерживается ;) буду теперь разбираться как заменять генераторы.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2007, 14:27 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34386160&tid=2005608]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
84ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 427ms |

| 0 / 0 |
