mirror of https://github.com/nocodb/nocodb
Raju Udava
2 years ago
1 changed files with 44 additions and 0 deletions
@ -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 |
Loading…
Reference in new issue