Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Базы данных > определение primary key для новой записи


Автор: math64 2.2.2012, 13:25
Нужно добавить новую запись в таблицу, primary key которой не известен, но возможно такая запись уже существует.
Как это сделать?
Использую Qt + sqlite, но возможен переход на другие БД.
Придумал пока так:
Код

create table Names (Id integer primary key, Name varchar, Info varchar);
insert or ignore into Names(Id, Name, Info) values(
   (select Id from Names where Name=:Name
    union
    select max(Id)+1 from Names
    order by 1 limit 1), :Name, :Info);

(проверял пока на отдельных select&union и insert)
Но судя по документации, в MySql простые select должны быть в скобках, а sqlite их не разрешает.
Или можно сделать проще?

Автор: borisbn 31.3.2012, 13:02
sqlite поддерживает http://www.sqlite.org/lang_createtable.html#rowidи http://www.sqlite.org/autoinc.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)