Files
wehub-resource-sync d718c5a372
CI / compile_and_lint (push) Waiting to run
CI / test (, sqlite, sqlite::memory:) (push) Blocked by required conditions
CI / test (mssql, mssql, mssql://root:Password123!@127.0.0.1/sqlpage) (push) Blocked by required conditions
CI / windows_test (push) Waiting to run
CI / test (mysql, mysql, mysql://root:Password123!@127.0.0.1/sqlpage) (push) Blocked by required conditions
CI / test (oracle, oracle, Driver=Oracle 21 ODBC driver;Dbq=//127.0.0.1:1521/FREEPDB1;Uid=root;Pwd=Password123!) (push) Blocked by required conditions
CI / test (postgres, odbc, Driver=PostgreSQL Unicode;Server=127.0.0.1;Port=5432;Database=sqlpage;UID=root;PWD=Password123!, true) (push) Blocked by required conditions
CI / test (postgres, postgres, postgres://root:Password123!@127.0.0.1/sqlpage) (push) Blocked by required conditions
CI / playwright (push) Blocked by required conditions
CI / docker_build (linux/amd64, -linux-amd64-duckdb, duckdb) (push) Waiting to run
CI / docker_build (linux/arm/v7, -linux-arm-v7, minimal) (push) Waiting to run
CI / docker_build (linux/arm64, -linux-arm64, minimal) (push) Waiting to run
CI / docker_build (linux/arm64, -linux-arm64-duckdb, duckdb) (push) Waiting to run
CI / docker_build (linux/amd64, minimal) (push) Waiting to run
CI / hurl_examples (push) Waiting to run
CI / hurl (${{ matrix.example }}) (push) Blocked by required conditions
CI / docker_push (duckdb) (push) Blocked by required conditions
CI / docker_push (minimal) (push) Blocked by required conditions
deploy website / deploy_official_site (push) Waiting to run
chore: import upstream snapshot with attribution
2026-07-13 12:31:57 +08:00
..

Master-Detail Forms (Nested Forms)

This example shows how to handle inserting data into multiple tables with a one-to-many relationship.

The example uses a SQLite database with the following schema:

Database Schema SQLPage Form
db schema user addition

A single master page features two forms based on two related tables or views. Users insert data in the master form first to update information from the parent table. Then, they can insert data in the detail forms to update information from the child tables.

This example application contains a main form to create users, and a second form to create their addresses.

Once a user has been added, multiple addresses can be added to it.

See https://github.com/sqlpage/SQLPage/discussions/16 for more details.

The main idea is to create two separate forms. In this example, we put both forms on the same page, in edit-user.sql. The first one is an edition form for the already-existing user record, and the second is a form to add an address to the user.

When you initially load the user creation form, we do not display the address form. Only when the user has been created, you are redirected to the user edition form that contains the address form.

Screenshots

homepage user addition