Lesson 12← back to roadmap
ELIPS validates every operation as you enqueue it, so commit() is a pure write.
From docs/cpp/api-reference/transaction.md: the transactional collection's add() validates dimension and finiteness at enqueue, throwing DimensionMismatch or InvalidVector. If enqueue succeeds for every op, commit() cannot fail validation.
python
with client.begin_transaction() as txn:
c = txn.collection("notes")
c.add(embedding=vector1, metadata={"tag": "a"})
c.add(embedding=vector2, metadata={"tag": "b"})
# clean exit -> commit
# exception -> rollback (destructor)cpp
auto txn = db->begin_transaction();
auto& tc = txn.collection("notes");
tc.add(vector1, {{"tag", std::string{"a"}}});
tc.add(vector2, {{"tag", std::string{"b"}}});
txn.commit(); // or txn.rollback();