2014-09-10 2 views
0

Я хочу вставлять в две таблицы за раз.Вставка нескольких таблиц с несколькими строками в таблицу в sqlite

Это нужно сделать таким образом.

Вставьте одну строку в одну таблицу, получите первичный ключ с автоматическим добавлением и вставьте несколько строк в другую таблицу, используя значение первичного ключа, которое я получил из первой таблицы в качестве ссылки.

Каков наилучший способ для этого?

ответ

0

SQLite имеет встроенную функцию last_insert_rowid(), но ее возвращаемое значение изменится после следующей вставки.

Вы должны прочитать значение в вашей программе, и вставьте его вручную:

db.execute("INSERT INTO People(Name) VALUES (?)", ["Joe"]) 
id = db.last_insert_rowid 
db.execute("INSERT INTO Pets(Owner, Name) VALUES (?,?)", [id, "Fluffy"]) 
db.execute("INSERT INTO Pets(Owner, Name) VALUES (?,?)", [id, "Spot"]) 
+0

Thank you.Is он такой же, как получение возвращаемого значения getWritableDatabase(). Вставить и использовать этот ключ в качестве ссылки? – Najiya

+0

Да (и если вы хотите знать, как это сделать на Android, вы должны упомянуть об этом в вопросе). –

0

Это зависит от того, как вы приращения ключа. Если вы сохраняете текущее «следующее значение ключа» в другой таблице, сначала извлеките следующий ключ и используйте его для всех своих операторов вставки. Наконец, добавьте «следующее значение ключа» в другую таблицу.

+0

Я использую автоинкрементный ключ – Najiya

+0

Хорошо, я понял, что после того, как я опубликовал, приношу свои извинения. –

Смежные вопросы