Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
я использую oid для определения id добавленных записей в таблицы и знаю что при достижении oid = MAX он сбрасывается на 0 и начинается новый отсчёт при этом ведь может получиться так что в одной таблице окажутся несколько записей с одинаковым oid как этого избежать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 17:17 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
джанкеря использую oid для определения id добавленных записей в таблицы и знаю что при достижении oid = MAX он сбрасывается на 0 и начинается новый отсчёт при этом ведь может получиться так что в одной таблице окажутся несколько записей с одинаковым oid как этого избежать? Используешь в корне неверное решение, отсюда и проблемы. авторOIDs are best used only for references to system tables. IMHO придётся переделывать систему :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 17:25 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
Хорошо. И всетаки как можно получить значение клучевого поля только что добавленной записи? (поле автоинкримент) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 17:34 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
может быть так?: Код: plaintext 1. 2. 3. 4. или делать инсерты через ХП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 17:51 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
select currval('seq_name') автоинкремент поле создает автоматом сиквенс с именем TableName_FieldName_seq в доках все это есть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 18:12 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
wbearselect currval('seq_name') автоинкремент поле создает автоматом сиквенс с именем TableName_FieldName_seq в доках все это есть а как насчёт выполнения некоторого количества инсертов несколькими пользователями? при таком раскладе юзер вася может получить id записи которую добавил петя и зачем она нужна васе? ВАСЕ НАДО УЗНАТЬ id СОБСТВЕННОРУЧНО ДОБАВЛЕННОЙ ЗАПИСИ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 18:45 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
Всё продумано: PostgreSQL docs 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. Так что юзер вася НЕ может получить id записи которую добавил петя :) Хотя я обычно через ХП: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2005, 18:53 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
И ты не сможешь вызвать currvalue, т.к. оно будет очень ругаться. Перед вызовом этой функции надо всегда вызывать nextval ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 00:07 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
AntonIggИ ты не сможешь вызвать currvalue, т.к. оно будет очень ругаться. Перед вызовом этой функции надо всегда вызывать nextval Не надо. Ни перед вызовом этой функции вызывать nextval, ни после её вызова вызывать currval. Она сама всё вызывает и возвращает. Другое дело, что мне лично в лом писать такие функции для каждой таблички с ключевым автоинкрементом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 07:43 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
AntonIgg прав... currval(seq) будет матюгатся до первого вызова nextval(seq) в сесии ,но не надо при этом забывать что insert в таблицу с автоинкрементным полем неяавно вызывает nextval() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 10:22 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
wbearAntonIgg прав... currval(seq) будет матюгатся до первого вызова nextval(seq) в сесии ,но не надо при этом забывать что insert в таблицу с автоинкрементным полем неяавно вызывает nextval()Вставка в таблицу с полем serial неявно вызывает nextval при отсутствии его значения в запросе INSERT: insert into tbl (somedata) values ('aaa') - неявный вызов nextval. insert into tbl (id, somedata) values (100, 'aaa') или insert into tbl values (100, 'aaa') - честная попытка вставить id=100, успешная или нет - уже другой вопрос. Слово "автоинкремент" было употреблено в более широком смысле. Можно в таблице иметь 1 - id serial 2 - id bigint default nextval('seq_name') 3 - просто id bigint и при вставке пользоваться функцией приведенной XM. Но функция ХМ будет работать в любом из этих 3-х случаев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 10:54 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
IMHO надо по максимуму пользоваться возможностями БД можно конечно написать кучу всего своего но на мой взгляд зачастую это неоправданно вот про TMP таблицы я бы послушал мнения кто как пользуется и кто что делает (тут есть простор для полета технической мысли :-)) правда это уже совсем другая история ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 13:04 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
Vlado а никто не спорит что будет работать с твоей ХП.. только с ней мы можем огрести проблеммы с производительность и проблемму со вставкой не всех полей т.е. если я в каком-то куске кода захочу проинсеритть другое количество полей мне придеться писать еще одну ХП.. а это бред. по мне так пользы от такой хп нет никакой, и я немогу себе представить ситуация где бы такая функция была бы разумна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 13:35 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
vfabrIMHO надо по максимуму пользоваться возможностями БД можно конечно написать кучу всего своего но на мой взгляд зачастую это неоправданно ...Ничего криминального в функции XM нету. Очень удобно использовать на клиенте. И возможности субд используются на всю катушку. Кроме того, политика разработки может запрещать прямое обращение к таблице. В постгресе я такими функциями не пользуюсь, а firebird'е делал подобные, но там нету currval... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 13:38 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
wbear а никто не спорит что будет работать с твоей ХП.. только с ней мы можем огрести проблеммы с производительность и проблемму со вставкой не всех полей т.е. если я в каком-то куске кода захочу проинсеритть другое количество полей мне придеться писать еще одну ХП.. а это бред. Часто вообще не нужно знать id последней записи, и тогда я использую прямые insert :) wbear по мне так пользы от такой хп нет никакой, и я немогу себе представить ситуация где бы такая функция была бы разумна. Польза есть, если вставка идет не в одну таблицу, если требуются хитрые проверки на ограничения, и т.п., что не всегда удобно реализовывать через rules и триггеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 14:07 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
wbearVlado а никто не спорит что будет работать с твоей ХП..ХП не моя. wbear... т.е. если я в каком-то куске кода захочу проинсеритть другое количество полей мне придеться писать еще одну ХП.. а это бред. ...Малость подумать - и не придется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2005, 14:09 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
Ща скажу крамолу (для веселухи :)) Наличие currval в постгресе избыточно. Без большого напряга без него можно обойтись, самую малость разгрузив сервер (ну очень самую). Хотя с ним удобнее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2005, 23:36 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
избыточно все вопрос в другом насколько соотношение избыточность/полезность правильно выбрано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2005, 00:11 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
Нужна помощь - я где то наверное глючу : на такое выдает relation "posada_kodposada_seq" does not exist Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2005, 16:29 |
|
||
|
узнать id добавленной записи или максимальное значение oid
|
|||
|---|---|---|---|
|
#18+
SELECT currval('"Posada_kodPosada_seq"') ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2005, 16:50 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=33236870&tid=2007046]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
133ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
70ms |
get tp. blocked users: |
2ms |
| others: | 241ms |
| total: | 494ms |

| 0 / 0 |
