powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQLite [игнор отключен] [закрыт для гостей] / SQLite - как получить id-шник только что созданный записи ???
8 сообщений из 8, страница 1 из 1
SQLite - как получить id-шник только что созданный записи ???
    #36088430
Фотография potkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста:
Как в SQLite получить id-шник только что созданный записи ???

Например в MS SQL-е это делается так:

Код: plaintext
1.
2.
 SqlCommand SQL_id = new SqlCommand("select @@IDENTITY", con);
 string id = SQL_id.ExecuteScalar().ToString();
...
Рейтинг: 0 / 0
SQLite - как получить id-шник только что созданный записи ???
    #36088524
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
potkinПодскажите пожалуйста:
Как в SQLite получить id-шник только что созданный записи ???

Например в MS SQL-е это делается так:

Код: plaintext
1.
2.
 SqlCommand SQL_id = new SqlCommand("select @@IDENTITY", con);
 string id = SQL_id.ExecuteScalar().ToString();


А заглянуть в документацию религия не позволяет?

http://www.sqlite.org/lang_corefunc.html
...
Рейтинг: 0 / 0
SQLite - как получить id-шник только что созданный записи ???
    #36090068
Alexbootch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
potkinПодскажите пожалуйста:.
Как в SQLite получить id-шник только что созданный записи ???

Например в MS SQL-е это делается так:

Код: plaintext
1.
2.
 SqlCommand SQL_id = new SqlCommand("select @@IDENTITY", con);
 string id = SQL_id.ExecuteScalar().ToString();


Смотри функцию last_insert_rowid() . Ссылка постом выше.

Если нужно получить id, т.е. INTEGER PRIMARY KEY AUTOINCREMENT , из твоей таблицы, то можно тоже с помощью функции l ast_insert_rowid() :

Код: plaintext
SELECT id FROM mytable WHERE rowid=last_insert_rowid();
...
Рейтинг: 0 / 0
SQLite - как получить id-шник только что созданный записи ???
    #36508851
rrmini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё один вопрос.
Можно ли каким-либо способом узнать id строки которая будет добавлена?
Поясню. К примеру есть таблица:
create table mytable (id INTEGER PRIMARY KEY AUTOINCREMENT, ...);

В процессе работы пользователь к примеру удалил все записи из таблицы. Соответственно id вновь добавляемой записи не равно 1.
...
Рейтинг: 0 / 0
SQLite - как получить id-шник только что созданный записи ???
    #36510033
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
rrminiЕщё один вопрос.
Можно ли каким-либо способом узнать id строки которая будет добавлена?
Поясню. К примеру есть таблица:
create table mytable (id INTEGER PRIMARY KEY AUTOINCREMENT, ...);

В процессе работы пользователь к примеру удалил все записи из таблицы. Соответственно id вновь добавляемой записи не равно 1.

Вот так:
select seq+1 from sqlite_sequence where name='mytable';

Но делать это необходимо в той же транзакции и вообще не рекомендуется. В крайнем случае, если уж так необходимо, то использовать полученный id при вставке записи - если почему-либо не удастся с этим id вставить, транзакция откатится, а иначе можно развалить всю логическую целостность БД.
...
Рейтинг: 0 / 0
SQLite - как получить id-шник только что созданный записи ???
    #36510095
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще, лучше сначала вставлять запись в таблицу с автоинкрементом. Потом читать из sqlite_sequence использованное значение. И уже последним шагом вставлять записи в зависимые таблицы.
...
Рейтинг: 0 / 0
SQLite - как получить id-шник только что созданный записи ???
    #36510712
rrmini
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MBGrrminiЕщё один вопрос.
Можно ли каким-либо способом узнать id строки которая будет добавлена?
Поясню. К примеру есть таблица:
create table mytable (id INTEGER PRIMARY KEY AUTOINCREMENT, ...);

В процессе работы пользователь к примеру удалил все записи из таблицы. Соответственно id вновь добавляемой записи не равно 1.

Вот так:
select seq+1 from sqlite_sequence where name='mytable';

Но делать это необходимо в той же транзакции и вообще не рекомендуется. В крайнем случае, если уж так необходимо, то использовать полученный id при вставке записи - если почему-либо не удастся с этим id вставить, транзакция откатится, а иначе можно развалить всю логическую целостность БД.

Спасибо большое. работает!
...
Рейтинг: 0 / 0
SQLite - как получить id-шник только что созданный записи ???
    #36535927
512es
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно просто:
Код: plaintext
SELECT last_insert_rowid();
http://www.sqlite.org/lang_createtable.html#rowid
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / SQLite - как получить id-шник только что созданный записи ???
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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