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