Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Всем привет. Есть таблица Код: plaintext 1. 2. 3. 4. 5. 6. 7. Есть ХП Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Как в этой ХП получить в cls_id значение id только что вставленной в таблицу obj строки. При условии что поля name,comment,class могут быть не уникальными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 17:10 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 17:17 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Большое спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 17:19 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
можно и "постфактум": сделать INSERT обычнам образом, т.е., без указания значения SERIAL-поля, а затем получить его текущее значение, вызвав функцию currval (по аналогии с nextval). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2006, 18:45 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Если не ошибаюсь, то "постфактум" лучше не делать. :-) Может так получиться, что между операцией вставки и операцией получения текущего значения последовательности это текущее значение изменится. Т.к. последовательность одна для всех транзакций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 19:37 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Можно делать и curval - если вы просто напишете curval без вставки - вам выдаст ошибку - следовательно curval действует в пределах транзации и только после insert - если уровень изоляции транзакций по умолчанию ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2006, 22:13 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
curval выдает последнее выделенное значение последовательности в текущей транзакции и абсолютно безопасен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2006, 11:01 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Funny_Falconcurval выдает последнее выделенное значение последовательности в текущей транзакции и абсолютно безопасен.не совсем точно currval Return the value most recently obtained by nextval for this sequence in the current session. (An error is reported if nextval has never been called for this sequence in this session.) Notice that because this is returning a session-local value, it gives a predictable answer whether or not other sessions have executed nextval since the current session did. а "сессия" и "транзакция" - вещи разные. например вполне работает в одном окне pgAdmina: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2006, 11:14 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Сори, облажался. Но и смысла запрашивать curval, если случился rollback не вижу (думаю и не бывает так Ж-) По-этому curval так и остается безопасным (если прямыми руками использовать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2006, 17:49 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Не остается. Скажем, пока ты выполнял операцию вставки, джедай в соседней транзакции вызовет nextval. И currval вернет тебе не твое значение, а приросшее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2006, 20:56 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Кувалдин РоманНе остается. Скажем, пока ты выполнял операцию вставки, джедай в соседней транзакции вызовет nextval. И currval вернет тебе не твое значение, а приросшее. Currval выдаст most recently obtained by nextval for this sequence in the current session . А не в "чужой" сессии. Не се па? Или я глубоко заблудился? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.04.2006, 22:16 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Не, это я облажался :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 08:34 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
не, ну я могу придумать, как кажецца можно навернуть логику с каррвал. Скажем - завести глобальный уникальный индификатор уровня базы на счетчике, а по вставке в какую-то табличку вызывать триггер "до вставки", порождающий вставку в другую табличку неких служебных объектов (т.е. в свою очередь наваривающих этот же глобальный уникальный индификатор. дальше вроде все понятно но это довольно искусственный пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 10:30 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
логику с некствал, я так понял тоже можно навернуть. Так что особой разницы между курвал и некствал нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.04.2006, 17:10 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
аналогичная проблема, но с тем, что есть UNIQUE поля. После INSERT-а (если он не удачен, т.е. UNIQUE VIOLATION по какому-то полю) - как получить id (serial) записи, которая вызвала VIOLATION? SELECT не предлагать. Не верю, что нельзя получить все поля записи, на которой возник UNIQUE VIOLATION без SELECT-а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 13:59 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
victor_krЕсли не ошибаюсь, то "постфактум" лучше не делать. :-) Может так получиться, что между операцией вставки и операцией получения текущего значения последовательности это текущее значение изменится. Т.к. последовательность одна для всех транзакций. аналогично и nextval <здесь кто-то может влезть> insert ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 14:28 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Winnipuhаналогично и nextval <здесь кто-то может влезть> insertЕсли получили номер с помощью nextval никто уже не влезет и не заберет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 14:39 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Начиная с версии 8.2 появилась возможность сделать это без nextval() или currval() с помощью "INSERT ... RETURNING ...". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 15:02 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatНачиная с версии 8.2 появилась возможность сделать это без nextval() или currval() с помощью "INSERT ... RETURNING ...". это хорошо работает только если не возникло UNIQUE VIOLATION. При вставке с возникновением UNIQUE VIOLATION значение не возвращается. Неужели без select-а никак? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 17:38 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Robert Ayrapetyanэто хорошо работает только если не возникло UNIQUE VIOLATION. При вставке с возникновением UNIQUE VIOLATION значение не возвращается. Неужели без select-а никак? Поясните свой вопрос примером. Мне, например, сложно понять, что именно Вы хотите получить и в каком виде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 18:18 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Имеется таблица ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 18:35 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Имеется таблица: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Выполняется INSERT INTO families(FamilyName) VALUES (blablalba); Необходимо: получить FamilyID в той записи, которая была вставлена, либо сгенерировала DUPLICATE VIOLATION. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 18:39 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
Robert Ayrapetyan Необходимо: получить FamilyID в той записи, которая была вставлена, либо сгенерировала DUPLICATE VIOLATION.очевидно, при ошиппке никакого FamilyID сгенерено не будет. ПО части наращивания счетчика, если произошло, спрашиваейте curval. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.08.2007, 18:54 |
|
||
|
вытянуть из insert значение вставленно по умолчанию
|
|||
|---|---|---|---|
|
#18+
INSERT ... RETURNING ... не годится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2007, 13:33 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=34723736&tid=2005156]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 423ms |

| 0 / 0 |
