powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQLite [игнор отключен] [закрыт для гостей] / sqlite в qt 4.3.0 - выбор primary key при добавлении строк.
9 сообщений из 9, страница 1 из 1
sqlite в qt 4.3.0 - выбор primary key при добавлении строк.
    #34751841
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Имеется следующий вопрос:

использую Qt 4.3.0 с драйвером sqlite
Есть таблица, создаваемая как:
Код: plaintext
1.
create table asdf (id integer primary key unique, .....);

Вопрос следующий:
как сделать автоматический выбор primary key при добавлении новых строк в
базу (если так можно сделать), или как можно получить список N
неиспользуемых значений primary key (чтобы прописывать значения из этого
списка при добавлении новых строк)?

Можно, конечно, сделать
Код: plaintext
1.
select (max(id)+ 1 ) from files;

но это не заполнит "дыры" от удалённых записей.

Спасибо.

ЗЫ. Вопрос, может, и простой, но это первое моё приложение, использующее
БД...

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
sqlite в qt 4.3.0 - выбор primary key при добавлении строк.
    #34751852
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем заполнять дыры?
...
Рейтинг: 0 / 0
sqlite в qt 4.3.0 - выбор primary key при добавлении строк.
    #34751894
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl wrote:

> А зачем заполнять дыры?
Т.е. забить?

P.S. Возможно, это просто это у меня паранойя по поводу того, что из-за дыр
значение ключа превысит maxint :-\. так как предполагаемый объем базы -
полмиллиона записей, то это если и произойдет, то нескоро.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
sqlite в qt 4.3.0 - выбор primary key при добавлении строк.
    #34751928
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV> А зачем заполнять дыры?
Т.е. забить?Конечно. Есть два способа заполнить дыры, первый это полностью перекопировать всю таблицу во временную таблицу с перенумерованием, а потом скопировать обратно и убить временную таблицу. Второй - пробежаться в цикле по всей таблице и если нашел дыру перенумеровать текущую запись.
Оба способа требуют полного перебора всех строк - медленно и не нужно.

ErVP.S. Возможно, это просто это у меня паранойя по поводу того, что из-за дыр
значение ключа превысит maxint :-\. так как предполагаемый объем базы -
полмиллиона записей, то это если и произойдет, то нескоро.В sqllite? MAXINT? Хе :) В SQLite нету типизации данных. Если твой клиент умеет работать с гигантскими числами - sqlite сумеет их сохранить.
...
Рейтинг: 0 / 0
sqlite в qt 4.3.0 - выбор primary key при добавлении строк.
    #34751962
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl wrote:

> В sqllite? MAXINT? Хе :)
Ясно. C++-сная привычка. :)

> Конечно. Есть два способа заполнить дыры
В, общем, я подразобрался чуть-чуть, и ,как я понял, информацию о дырах
можно получит вот так (таблица называется names, в mysql запрос работает):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select 
        'first empty element:', (a.id+ 1 ), 
        'num elements:', (b.id-a.id) 
        
from 
        names a, names b 

where 
        (b.id > a.id+ 1 ) and not exists (
                select  
                        c.id 
                from 
                        names c 
                where 
                        (c.id > a.id) and (c.id < b.id)
        );
Но что-то мне как-то не очень хочется это на добавление каждой строки
вызывать :)

В общем, вопрос решен.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
sqlite в qt 4.3.0 - выбор primary key при добавлении строк.
    #34751977
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV wrote:

> 'num elements:', (b.id-a.id)
поправка: "(b.id - a.id + 1)"
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
sqlite в qt 4.3.0 - выбор primary key при добавлении строк.
    #34751979
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV wrote:

> поправка: "(b.id - a.id + 1)"
упс. имелось в виду"(b.id - (a.id + 1))" или
"(b.id - a.id - 1)";
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
sqlite в qt 4.3.0 - выбор primary key при добавлении строк.
    #34752394
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
Здравствуйте!

Имеется следующий вопрос:

использую Qt 4.3.0 с драйвером sqlite
Есть таблица, создаваемая как:
Код: plaintext
1.
create table asdf (id integer primary key unique, .....);

Вопрос следующий:
как сделать автоматический выбор primary key при добавлении новых строк в
базу (если так можно сделать), или как можно получить список N
неиспользуемых значений primary key (чтобы прописывать значения из этого
списка при добавлении новых строк)?


create table asdf (id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,...
...
Рейтинг: 0 / 0
sqlite в qt 4.3.0 - выбор primary key при добавлении строк.
    #34752474
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexbootch wrote:

> AUTOINCREMENT
спасибо, попробую.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / sqlite в qt 4.3.0 - выбор primary key при добавлении строк.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]