Удаление строк в Rust
Запрос удаления убирает строки из таблицы,
которые подходят под условие. Без
условия очистят всю таблицу, поэтому
WHERE почти всегда пишут явно.
Удалим одну запись по ключу:
use rusqlite::{Connection, params};
fn drop_id(id: i64) -> Result<(), rusqlite::Error> {
let conn = Connection::open("app.db")?;
let removed = conn.execute(
"DELETE FROM user WHERE id = ?1",
params![id],
)?;
println!("{}", removed);
Ok(())
}
fn main() {
match drop_id(3) {
Ok(()) => {}
Err(e) => println!("{}", e),
}
}
Число на экране показывает, сколько строк исчезло. Если ключ не найден, число будет нулем.
Условие можно задать по текстовому столбцу:
use rusqlite::{Connection, params};
fn drop_name(label: &str) -> Result<(), rusqlite::Error> {
let conn = Connection::open("app.db")?;
conn.execute(
"DELETE FROM user WHERE name = ?1",
params![label],
)?;
Ok(())
}
fn main() {
match drop_name("bob") {
Ok(()) => println!("cut"),
Err(e) => println!("{}", e),
}
}
Дана таблица:
1 ann
2 bob
3 cara
Удалите строку с id равным
2 и выведите left 2,
если после удаления осталось две строки.
Дана таблица:
5 dan
6 dan
Уберите все строки, где name
равно dan, и выведите число
удаленных записей.
Скажите, можно ли вернуть строку после удаления тем же запросом выборки без новой вставки.