diff --git a/packages/noco-docs/content/en/setup-and-usages/primary-key.md b/packages/noco-docs/content/en/setup-and-usages/primary-key.md new file mode 100644 index 0000000000..f9c0edc990 --- /dev/null +++ b/packages/noco-docs/content/en/setup-and-usages/primary-key.md @@ -0,0 +1,44 @@ +--- +title: "Primary Key" +description: "Primary Key" +position: 574 +category: "Product" +menuTitle: "Primary Key" +--- + +## What is a Primary Key ? +- Key in a relational database table that is unique for each 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 +1. From UI, Create new table / Import from Excel / Import from CSV + 1. An `ID` [datatype: Integer] system field created by default during table creation is used as primary key + 2. Additional system fields `created-at`, `updated-at` are inserted by default & can be omitted optionally; these fields can be deleted after table creation +2. Connect to existing external database + 1. Existing `primary key` field defined for a table is retained as is; NocoDB doesn't insert a new ID field + 2. Additional system fields `created-at`, `updated-at` are not inserted by default +3. Import from Airtable + 1. Airtable record ID is marked as primary key for imported records, and is mapped to field `ncRecordId` [datatype: varchar] + 2. If a new record is inserted after migration & if ncRecordId field was omitted during record insertion - auto generated string will be inserted by NocoDB + 3. Computed hash value for the entire record is stored in system field `ncRecordHash` + 4. Additional system fields `created-at`, `updated-at` are not inserted by default +4. Create new table using SDK / API + 1. No default primary key field is introduced by NocoDB. It has to be explicitly specified during table creation (using attribute `pk: true`) + +## 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 `metasync` explicitly