INSERT starts from visible rows and schema.

highlighted = computed this step

Table before INSERT

Start with the exact rows and schema before a new row is appended.

table first\text{table first}

Show base rows

The table has 2 rows and 4 columns.

rows=2\text{rows}=2

INSERT examples are tiny finite row appends; SQL dialect completeness, generated defaults, identity columns, constraints beyond visible NOT NULL, triggers, transactions, indexes, performance, and product behavior are out of scope.

Table before INSERT: base rowsidnamestatusnote1Adaactiveseed2BennewNULL SchemacolumnnotNulldefaultidyesNO_DEFAULTnameyesNO_DEFAULTstatusyesnewnotenonone Column list to rowinsertcolumnsvaluesdecisionappendIndexreasons0(id, name, status)(3, Cy, active)accepted2() Resolved insert cellsinsertcolumnsupplieddefaultresultsourcereason0idyesNO_DEFAULT3explicitok0nameyesNO_DEFAULTCyexplicitok0statusyesnewactiveexplicitok0notenononenonedefaultok Rows after INSERTidnamestatusnote1Adaactiveseed2BennewNULL3Cyactivenone INSERT factsfactvaluebaseRowCount2insertAttemptCount1acceptedRowCount1rejectedRowCount0finalRowCount3defaultFillCount1explicitNullCount0

Read the schema

The schema names required columns and defaulted columns before values are mapped.

schema visible\text{schema visible}

Summary

INSERT appends accepted rows after these pinned rows.

append after base\text{append after base}