Создание таблицы в Rust
Таблицу описывают одним запросом: имя таблицы и список столбцов с типами. Пока таблицы нет, вставка в нее завершится сбоем, поэтому схему готовят заранее.
Создадим таблицу user с ключом
и текстовым именем:
use rusqlite::Connection;
fn setup() -> Result<(), rusqlite::Error> {
let conn = Connection::open("app.db")?;
conn.execute(
"CREATE TABLE IF NOT EXISTS user (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
)",
[],
)?;
Ok(())
}
fn main() {
match setup() {
Ok(()) => println!("table"),
Err(e) => println!("{}", e),
}
}
На экране table. Повторный запуск
не ломает файл: условие IF NOT EXISTS
пропускает создание, если таблица уже
есть.
Тот же запрос можно отправить после открытия соединения внутри одной функции без отдельного имени шага:
use rusqlite::Connection;
fn main() {
match Connection::open("app.db") {
Ok(conn) => {
match conn.execute(
"CREATE TABLE IF NOT EXISTS user (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
)",
[],
) {
Ok(_) => println!("done"),
Err(e) => println!("{}", e),
}
}
Err(e) => println!("{}", e),
}
}
Дана таблица:
CREATE TABLE note (
id INTEGER PRIMARY KEY,
body TEXT NOT NULL
);
Откройте app.db и создайте эту
таблицу с проверкой существования.
При успехе выведите note.
Скажите, зачем в запросе создания
указывают PRIMARY KEY у столбца
id.
Скажите, что произойдет при повторном
создании той же таблицы с условием
IF NOT EXISTS.