# How to Define an Auto Increment Primary Key in PostgreSQL

> To define an auto-incremented primary key in Postgres, specify a column name followed by a pseudo data type named “SERIAL”, and then specify the PRIMARY KEY ke…

The primary keys are widely used in all relational databases, including Postgres. Developers prefer to create every table with a primary key. The primary keys in Postgres are used to identify a record uniquely. You can create a primary key for any data type; however, most frequently, the primary keys are defined using the INT data type. In such cases, the user specified a unique value for each primary key while inserting the data into a table.

In Postgres, a pseudo data type named “SERIAL” can be used for the PRIMARY KEY column to define an auto-incremented primary key.

This write-up will teach you how to define an auto-incremented primary key in Postgres via practical examples.

 **How to Define/Create an Auto Incremented Primary Key in Postgres?**

You can define an auto-increment primary key at the time of table creation using the following syntax:
    
    
    CREATE TABLE table_name(
    col_name SERIAL PRIMARY KEY
    )

An auto-incremented unique identifier will be created using the syntax above.

 **Example: How Do I Create/Define an Auto-Incremented Primary Key in Postgres?**

This example will show you how to define an auto-incremented primary key while table creation:
    
    
    CREATE TABLE company_details(
    c_id SERIAL PRIMARY KEY,
    c_ceo TEXT,
    ceo_id INT
    );

The above query will create an auto-incremented PRIMARY KEY named “c_id” for the company_details table:

The above snippet shows that a table named “company_details” has been created with three columns: c_id, c_ceo, and ceo_id. Now, we will execute the INSERT INTO statement to insert the data into the “company_details” table:
    
    
    INSERT INTO company_details(c_ceo, ceo_id)
    VALUES ('Joe', 5),
    ('Joseph', 2),
    ('Alex', 3),
    ('Ambrose', 1),
    ('Mike', 4),
    ('Seth', 6);

Since the c_id column is defined with the SERIAL data type, so there is no need to specify the value for that particular column while data insertion. The value of the c_id column will be auto-incremented for each record:

All the records have been inserted into the company_details table. Executing the SELECT * command will show the table’s data:
    
    
    SELECT * FROM company_details;

The output snippet authenticates the working of the auto-incremented primary key.

This is how you can create an auto-incremented Primary key in Postgres.

 **Conclusion**

To define an auto-incremented primary key in Postgres, specify a column name followed by a pseudo data type named “SERIAL”, and then specify the PRIMARY KEY keyword. In such cases, PostgreSQL will address all behind the scene complexities and auto-increment the primary key value for each insertion. This write-up explained how to define/create an auto-incremented primary in Postgres using the SERIAL pseudo-data type.

---
[View this page online](https://www.commandprompt.com/education/how-to-define-an-auto-increment-primary-key-in-postgresql/)