Primary Key
What is a Primary Key ?
- A primary key is a special database table column designated to uniquely identify each table record.
What is the use of Primary Key ?
- As it uniquely identifies an individual record of a table, it is used internally by NocoDB for all operations associated with a record
Primary Key in NocoDB
- Primary Key that gets defined / used in NocoDB depends on how underlying table was created. Summary is captured below
- From UI, Create new table / Import from Excel / Import from CSV
- An
ID
[datatype: Integer] system field created by default during table creation is used as primary key - Additional system fields
created-at
,updated-at
are inserted by default & can be omitted optionally; these fields can be deleted after table creation
- An
- Connect to existing external database
- Existing
primary key
field defined for a table is retained as is; NocoDB doesn't insert a new ID field - Additional system fields
created-at
,updated-at
are not inserted by default
- Existing
- Import from Airtable
- Airtable record ID is marked as primary key for imported records, and is mapped to field
ncRecordId
[datatype: varchar] - If a new record is inserted after migration & if ncRecordId field was omitted during record insertion - auto generated string will be inserted by NocoDB
- Computed hash value for the entire record is stored in system field
ncRecordHash
- Additional system fields
created-at
,updated-at
are not inserted by default
- Airtable record ID is marked as primary key for imported records, and is mapped to field
- Create new table using SDK / API
- No default primary key field is introduced by NocoDB. It has to be explicitly specified during table creation (using attribute
pk: true
)
- No default primary key field is introduced by NocoDB. It has to be explicitly specified during table creation (using attribute
What if Primary Key was missing?
It is possible to have a table without any primary key.
- External database table can be created without primary key configuration.
- New table can be created using SDK / API without primary key In such scenario's, new records can be created in NocoDB for this table, but records can't be updated or deleted [as there is now way for NocoDB to uniquely identify these records]
Example : Primary Key & optional system fields during new table creation
Example : Show System Fields
Can I change the Primary Key to another column within tables ?
- You can't update Primary Key from NocoDB UI. You can reconfigure it at database level directly & trigger
meta sync
explicitly.