Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Получить идентификатор из созданной записи
|
|||
|---|---|---|---|
|
#18+
Что-то не могу сообразить (наверное из-за недостаточного опыта работы с SQL...). Есть таблица, одно из полей - идентификатор, заполняется автоматически (допустим, тип serial). Каким образом после создания записи можно получить его значение? Если важно - работа с базой ведётся из Perl (DBI). Пока лучшее, что придумал - это всё-таки не использовать тип serial, а создать последовательность вручную, получить новое значение при помощи функции nextval и потом уже создавать строку, задав идентификатор явно. То есть в итоге не воспользоваться подстановкой значения по умолчанию для идентификатора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2005, 22:02 |
|
||
|
Получить идентификатор из созданной записи
|
|||
|---|---|---|---|
|
#18+
как мне кажется можно воспользоваться двумя способами. Первый если идентификатор заведомо увеличивает значение то SELECT MAX(ID) FROM ...WHERE.... Второй способ заключается в том что после закидывания какой-либо информации в БД вызвать SELECT ID FROM.... WHERE .... , где в качестве условий произвести сравнение полей имено с той самой информацией которую вы закинули. Думаю что есть ещё способы, но они мне неизвестны. Если у вас получится сделать по другому, обязательно расскажите методику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 01:17 |
|
||
|
Получить идентификатор из созданной записи
|
|||
|---|---|---|---|
|
#18+
Мдас. Тип serial - это и есть последовательность, только создается она автоматически и к ней можно как же точно обращаться. Т.е. внеслась какаето запись, вызвав currval можно получить его значение. select currval('имя последовательности') into seqlastvaluepar; Имя последовательности, насколько помню дается такое: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 01:52 |
|
||
|
Получить идентификатор из созданной записи
|
|||
|---|---|---|---|
|
#18+
AntonIggМдас. Тип serial - это и есть последовательность, только создается она автоматически и к ней можно как же точно обращаться. Т.е. внеслась какаето запись, вызвав currval можно получить его значение. select currval('имя последовательности') into seqlastvaluepar; Имя последовательности, насколько помню дается такое: Код: plaintext Ну да, он сообщает при создании таблицы с полем типа serial что была создана последовательность. Но в итоге, чтобы получить значение идентификатора, всё равно приходим к двум запросам. То есть одним, как я понимаю, обойтись нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 10:31 |
|
||
|
Получить идентификатор из созданной записи
|
|||
|---|---|---|---|
|
#18+
ASKh Ну да, он сообщает при создании таблицы с полем типа serial что была создана последовательность. Но в итоге, чтобы получить значение идентификатора, всё равно приходим к двум запросам. То есть одним, как я понимаю, обойтись нельзя? А в чём собственно проблема? Чем второй запрос мешает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 12:29 |
|
||
|
Получить идентификатор из созданной записи
|
|||
|---|---|---|---|
|
#18+
mwolf ASKhТо есть одним, как я понимаю, обойтись нельзя? А в чём собственно проблема? Чем второй запрос мешает? Да в принципе ничем... Просто хотелось узнать, вдруг есть стандартное средство для такой ситуации, всё-таки создать идентификатор и сразу его получить - как-то логично :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 14:06 |
|
||
|
Получить идентификатор из созданной записи
|
|||
|---|---|---|---|
|
#18+
ASKhДа в принципе ничем... Просто хотелось узнать, вдруг есть стандартное средство для такой ситуации, всё-таки создать идентификатор и сразу его получить - как-то логично :-) Не вижу логики. Вставки записи одно действие, получение состояния счётчика - другое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 14:28 |
|
||
|
Получить идентификатор из созданной записи
|
|||
|---|---|---|---|
|
#18+
ASKh Да в принципе ничем... Просто хотелось узнать, вдруг есть стандартное средство для такой ситуации Описанный алгоритм как раз и является стандартным решением данного вопроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 14:42 |
|
||
|
Получить идентификатор из созданной записи
|
|||
|---|---|---|---|
|
#18+
ASKh mwolf ASKhТо есть одним, как я понимаю, обойтись нельзя? А в чём собственно проблема? Чем второй запрос мешает? Да в принципе ничем... Просто хотелось узнать, вдруг есть стандартное средство для такой ситуации, всё-таки создать идентификатор и сразу его получить - как-то логично :-) относительно распространенное (но не назвал бы стандартным) решение - вставлять данные вызовом хранимки, возвращающей некствал. Обычно пользую для вставки записи разом с подчиненкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2005, 15:56 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=33403067&tid=2006839]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 261ms |
| total: | 403ms |

| 0 / 0 |
