Pular para o conteúdo

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.

02-create-and-insert.zolo
Playground
// 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?

Buscar no Zolo

9 resultados

enespt-br