In PostgreSQL, SERIAL is a pseudo-type that generates an auto-incrementing column. If you specify SERIAL as the data type for a column during table creation, PostgreSQL will automatically generate unique values for that particular column. However, occasionally users may need to override the default behavior of a SERIAL column. For this purpose, users must explicitly provide the column names and their corresponding values in the INSERT statement.
This post demonstrates how to override a SERIAL column in PostgreSQL using suitable examples.
Can a User Override a SERIAL Column in PostgreSQL?
Yes! A SERIAL column can be overridden by the user. This can be done by explicitly specifying the name of the SERIAL column in the INSERT statement and providing a corresponding value for that particular column.
Consider the following steps for a profound understanding of overriding the SERIAL column:
Step 1: Create a SERIAL Column
Let’s first create a SERIAL column. For this purpose, specify the “SERIAL” data type for a specific column at the time of table creation:
CREATE TABLE command_prompt(
id SERIAL PRIMARY KEY,
name TEXT
);
A table named “command_prompt” with a SERIAL data type has been successfully created:

Step 2: INSERT Data
Now insert a couple of records in the command_prompt table by executing the following query:
INSERT INTO command_prompt(name)
VALUES ('blog 1'),
('blog 2'),
('blog 3')
RETURNING *;
The “RETURNING *” clause is used in the above query to get the newly inserted records:

From the above output snippet, you can observe that the id column is filled automatically with the sequence of unique values.
Step 3: Override the SERIAL Column
Use the INSERT command, and explicitly specify the id column in it to override the SERIAL column:
INSERT INTO command_prompt(id, name)
VALUES (5, 'blog 5')
RETURNING *;
The following snippet demonstrates that the SERIAL column has been successfully overridden:

Let’s insert one more record in the “command_prompt” table for a profound understanding of the SERIAL column:
INSERT INTO command_prompt(name)
VALUES ('blog 6')
RETURNING *;
It is clear from the output that when a new record is inserted, the auto-incrementing sequence of the serial column starts from where it left off:

That’s all about overriding a SERIAL column in PostgreSQL.
Conclusion
Yes! A SERIAL column can be overridden by the user by explicitly specifying the name of the column in the INSERT statement and providing a corresponding value for that particular column. Overriding a SERIAL column allows us to specify a value of our choice instead of letting it automatically increase on its own. This write-up has demonstrated a complete guide on overriding a SERIAL column in PostgreSQL.