AppsAutessaDB

Tables and data modeling · AutessaDB

Append-only tables

AutessaDB supports append-only tables: a write-once table where rows can be inserted and read but never updated or deleted. It is built for ledgers, audit trails and records that must not change, and the setting is a one-way latch that can be turned on but never off.

Goes beyond a typical managed database
payment_ledgerappendOnly: trueSAMPLE
idamount_centsreasoncreated_at
88112,000invoice INV-20409:12Z
882-12,000reversal of 88109:40Z
88311,500invoice INV-204 (corrected)09:41Z
query update rowId 881refusedtables update-schema (remove column)refusedquery insertallowed

-- the problem

Audit data is only trustworthy if nobody can rewrite it

A payment ledger, a consent record or an evidence log loses its value the moment someone can quietly edit a row. Application code that promises not to update rows is not the same as a table that refuses to. Append-only tables make immutability a property of the data, not a convention.

What you get

  • Inserts and reads work as normal; every update and delete is refused.
  • The append-only flag is a one-way latch: you can turn it on later, but never off.
  • Removing a column is refused, because it would destroy history.
  • Computed columns are not allowed on an append-only table.
  • Every returned schema carries an appendOnly flag, so apps and agents can tell before they try to write.
  • Row security, masking and the access log still apply, so immutable does not mean public.

-- how it works

How does append-only tables work in AutessaDB?

  1. Decide at creation

    Set appendOnly in the schema when you create the table. Ledger and audit tables should start this way.

  2. Write events, not edits

    Model changes as new rows (a correction, a reversal) instead of edits to old ones.

  3. Read and report

    Query, aggregate and search the table as usual; history stays exactly as written.

-- every option

Append-only rules

optionwhat it does
Insert / readAllowed.
Update / deleteRefused, including bulk and batch calls.
Turn on laterAllowed on an existing table.
Turn offNever allowed.
Remove a columnRefused.
Computed columnsNot allowed.

-- example

Create a write-once tablejson
{
  "tableName": "payment_ledger",
  "schema": {
    "appendOnly": true,
    "columnDefinitions": [
      { "columnName": "amount_cents", "columnType": "INTEGER", "required": true },
      { "columnName": "reason", "columnType": "SHORT_TEXT" }
    ]
  }
}

Full reference in the AutessaDB CLI docs and the API reference.

-- permissions

Who can do what?

accesscan
Owner / ADMINCreate the table append-only, or latch an existing table.
WRITEInsert new rows.
READRead, query and search rows.

-- relations

How it connects

-- faq

Questions about append-only tables

Can I turn append-only off?

No. Append-only is a one-way latch. You can turn it on for an existing table, but never off, which is what makes it trustworthy.

How do I correct a mistake in an append-only table?

Insert a new row that reverses or corrects the old one. The original stays, so the history shows both.

Does row-level security still apply?

Yes. Row rules, column masking and hidden columns work on append-only tables like any other.

$ autessa autessadb tables create

Try append-only tables in AutessaDB

Append-only tables are write-once: rows can be added and read but never changed or removed, and the setting can be turned on but never off.

Read the AutessaDB guide or install the CLI.

100% customizable, code and all

Make AutessaDB fully your own.

Use it out of the box, then change anything. Ask Autobot, Autessa’s AI builder, for a new field, screen, report, workflow or agent and it builds it into your copy of the app. Or open the code and edit it yourself. Nothing is locked: the app, its data and its code are yours.

Start free and make it yours