DDL e Inserção
Nesta página
db.execute(sql) serve tanto para DDL (CREATE TABLE, DROP TABLE) quanto para
DML que não retorna linhas (INSERT, UPDATE, DELETE). Retorna
Result<int, DbError> — faça unwrap ou trate o erro; em caso de sucesso, o
int é o número de linhas afetadas, útil para confirmar que a operação produziu
o efeito esperado.
Para DDL de múltiplas linhas, use o literal de bloco ```sql ... ``` — o
mesmo que uma string heredoc, mas com destaque de sintaxe SQL no editor.
Cria a tabela products, insere três linhas e verifica o retorno de execute.
// Feature: Database — `db.execute(sql)` for DDL and DML
// Syntax: `db.execute("...").unwrap()` — returns Result<int, DbError>;
// the int is the number of affected rows.
// When to use: create schema, populate tables, any SQL that does not
// return rows.
use std::database::Database
let db = Database.open("sqlite://:memory:").unwrap()
defer db.close()
db.execute(```sql
CREATE TABLE products (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
price REAL
)
```).unwrap()
let inserted = db.execute("INSERT INTO products (id, name, price) VALUES (1, 'Widget', 9.99)").unwrap()
print("inserted: {inserted}")
// expected: inserted: 1
db.execute(sql"INSERT INTO products (id, name, price) VALUES (2, 'Gadget', 19.99)").unwrap()
db.execute(sql"INSERT INTO products (id, name, price) VALUES (3, 'Doohickey', 4.99)").unwrap()
print("3 products inserted")
// expected: 3 products inserted
Requer a CLI/host do Zolo — abra no playground ou rode localmente.
Desafio
Adicione um quarto produto e depois execute um UPDATE que altere o preço de
todos os itens com price < 10. Quantas linhas foram afetadas?
Veja também