C++Builder
  Начало   Форум   Помощь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Узнать ID только что вставленной записи  (Прочитано 1507 раз)
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 786


Узнать ID только что вставленной записи
« : 25 Июнь 2015, 12:58:46 »

Есть таблица в PostgreSQL:
Код
CREATE TABLE rooms
(
 id serial NOT NULL,
 "name" CHARACTER VARYING(200) NOT NULL,
 tel CHARACTER VARYING(20),
 person CHARACTER VARYING(128),
 prim1 CHARACTER VARYING(200),
 checkbool BOOLEAN,
 CONSTRAINT pk_id_rooms PRIMARY KEY (id)
)
 
В программе может быть два сценария.
1. Иногда надо просто вставить запись в эту таблицу.
2. Иногда надо вставить запись и сразу узнать ID только что вставленной записи и иметь значение этого ID в программе.
Как правильно узнать ID только что вставленной записи?

P.S.
Вот так можно написать:
INSERT INTO rooms(name) VALUES ('Помещение') RETURNING id;
В pgAdmin видно правильное значение.
Не понимаю как это значение сразу получить в программе?


« Последнее редактирование: 25 Июнь 2015, 15:07:15 от SilverFish » Записан
SilverFish
Участник


Сказали спасибо: +14/-6
Offline

Сообщений: 786


« Ответ #1 : 25 Июнь 2015, 15:36:35 »

Вроде так:
Код
--FDQueryInsertRooms
INSERT INTO rooms (name, tel, person, prim1)
VALUES (:name, :tel, :person, :prim1) RETURNING id;
 


Код
   UniMainModule()->FDQueryInsertRooms->Close();
  UniMainModule()->FDQueryInsertRooms->ParamByName(L"NAME")->AsString = UniEditNameRoom->Text;
  UniMainModule()->FDQueryInsertRooms->ParamByName(L"TEL")->AsString = UniEditTel->Text;
  UniMainModule()->FDQueryInsertRooms->ParamByName(L"PERSON")->AsString = UniEditPerson->Text;
  UniMainModule()->FDQueryInsertRooms->ParamByName(L"PRIM1")->AsString = UniEditPrim->Text;
  //UniMainModule()->FDQueryInsertRooms->ExecSQL();
  UniMainModule()->FDQueryInsertRooms->Open();
 
 int idroom = UniMainModule()->FDQueryInsertRooms->FieldByName(L"id")->AsInteger;
 
 
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  




....

Powered by SMF 1.1.21 | SMF © 2025, Simple Machines
Страница сгенерирована за 0.349 секунд. Запросов: 21.