Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / SQLite [игнор отключен] [закрыт для гостей] / SQLite - как получить id-шник только что созданный записи ??? / 8 сообщений из 8, страница 1 из 1
14.07.2009, 11:23
    #36088430
potkin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite - как получить id-шник только что созданный записи ???
Подскажите пожалуйста:
Как в SQLite получить id-шник только что созданный записи ???

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

Код: plaintext
1.
2.
 SqlCommand SQL_id = new SqlCommand("select @@IDENTITY", con);
 string id = SQL_id.ExecuteScalar().ToString();
...
Рейтинг: 0 / 0
14.07.2009, 11:58
    #36088524
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite - как получить id-шник только что созданный записи ???
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
15.07.2009, 00:19
    #36090068
Alexbootch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite - как получить id-шник только что созданный записи ???
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
09.03.2010, 13:45
    #36508851
rrmini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite - как получить id-шник только что созданный записи ???
Ещё один вопрос.
Можно ли каким-либо способом узнать id строки которая будет добавлена?
Поясню. К примеру есть таблица:
create table mytable (id INTEGER PRIMARY KEY AUTOINCREMENT, ...);

В процессе работы пользователь к примеру удалил все записи из таблицы. Соответственно id вновь добавляемой записи не равно 1.
...
Рейтинг: 0 / 0
09.03.2010, 20:41
    #36510033
MBG
MBG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite - как получить id-шник только что созданный записи ???
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
09.03.2010, 21:25
    #36510095
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite - как получить id-шник только что созданный записи ???
А вообще, лучше сначала вставлять запись в таблицу с автоинкрементом. Потом читать из sqlite_sequence использованное значение. И уже последним шагом вставлять записи в зависимые таблицы.
...
Рейтинг: 0 / 0
10.03.2010, 10:08
    #36510712
rrmini
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite - как получить id-шник только что созданный записи ???
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
23.03.2010, 04:02
    #36535927
512es
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SQLite - как получить id-шник только что созданный записи ???
можно просто:
Код: plaintext
SELECT last_insert_rowid();
http://www.sqlite.org/lang_createtable.html#rowid
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / SQLite - как получить id-шник только что созданный записи ??? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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