![]() |
|
Модераторы: LSD |
![]()
|
|
| Alexander06 |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Здравствуйте,
у меня часто возникает задача добавить в таблицу запись, например в такую (postgreSQL)
Причем на момент создания записи поле key не известно, оно заполняется счетчиком (serial) В дальнейших запросах мне требуется этот ключ, поэтому я делаю выборку
И продолжаю работу (этот key используется как поле для другой таблицы, ссылающейся на nodes). Отсюда вопрос: Можно ли как-то упростить эту процедуру, сразу после INSERT получив ключ созданной записи? Насколько я понимаю, это можно сделать хранимой процедурой, но я с ними не знаком...можно ли обойтись SQL? Спасибо. |
||||
|
|||||
| msr |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 13.4.2009 Репутация: 1 Всего: 1 |
вариант номер раз
вариант 2
|
||||
|
|||||
| Alexander06 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Спасибо, помогло
Пользуюсь возможностью сразу задать еще один вопрос. предположим, что мне надо добавить очередную запись в nodes по условию. Например, если nodes с name = "узел1" уже есть, то не выполнять INSERT. Сейчас я это условие проверяю в программе перед INSERT. |
|||
|
||||
| msr |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 16 Регистрация: 13.4.2009 Репутация: 1 Всего: 1 |
можно создать триггер типа такого
|
|||
|
||||
| Alexander06 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 90 Регистрация: 28.7.2006 Репутация: нет Всего: нет |
Ааа..я понял, если запись уже есть, то не выполнять INSERT.
Пожалуй, я все-таки напишу функцию для вставки, мне это проще для восприятия. Спасибо, тема закрыта Это сообщение отредактировал(а) Alexander06 - 8.6.2009, 13:59 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PostgreSQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |