How to Reset the Primary Key Sequence ID in PostgreSQL?
Last Updated :
24 Apr, 2024
PostgreSQL is a powerful, open-source, object-relational database management system (DBMS) developed by a community of contributors. primary key in PostgreSQL is a unique identifier for each row in a table. It is a column or a combination of columns that ensures the integrity of the data in the table. In this article, we will explore how to Reset the Primary Key Sequence ID with the help of different approaches & we will also see examples of each approach.
How to Reset the Primary Key Sequence ID in PostgreSQL?
When working with PostgreSQL process of Resetting the Primary Key Sequence ID. There are a few different approaches to resetting the primary key sequence ID in PostgreSQL, each with its advantages and disadvantages. The following approaches are:
- Using the ALTER SEQUENCE Command
- Using SETVAL and pg_get_serial_sequence
Before we delve deeper into the queries, let's create the table courses in gfg database and insert some sample values in the table. The following code creates the Sample Table and inserts the entries in the table.
CREATE DATABASE gfg;
-- Create a table
CREATE TABLE courses (
course_id SERIAL PRIMARY KEY,
course_name VARCHAR(100),
fees DECIMAL(10, 2),
instructor VARCHAR(100)
);
-- Insert some sample data
INSERT INTO courses (course_id,course_name, fees, instructor)
VALUES
(1,'Java', 10000, 'Akhil'),
(2,'Python', 15000, 'Jacky'),
(3,'C++', 20000, 'Sourav');
Output:
courses
1. Using the ALTER SEQUENCE Command
The ALTER SEQUENCE command in PostgreSQL is used to modify the properties of a sequence. Sequences are database objects that generate unique sequential numbers, typically used as primary key values.
Syntax:
ALTER SEQUENCE name [ INCREMENT [ BY ] increment ]
[ START [ WITH ] start ]
[ MINVALUE minvalue | NO MINVALUE ]
[ MAXVALUE maxvalue | NO MAXVALUE ]
[ CACHE ]
[ CYCLE | NO CYCLE ]
[ OWNED BY { table_name.column_name | NONE } ];
- name: is the name of the sequence object to be altered.
- increment: is the increment value for the sequence. If omitted, the increment value is 1.
- start: is the start value for the sequence. If omitted, the start value is the current value of the sequence.
- minvalue and maxvalue: specify the minimum and maximum values for the sequence, respectively. If omitted, the minimum and maximum values are determined by the integer, bigint, or smallint data type of the sequence.
- cache: specifies the cache size for the sequence. If omitted, the cache size is set to the default value.
- cycle: specifies that the sequence should cycle after reaching its maximum value. If omitted, the sequence does not cycle.
- owned by: specifies the table and column that own the sequence. If omitted, the sequence is owned by no table or column
Example
The following query reset the sequence to start from the next value after the maximum course_id. Assuming the sequence name is courses_course_id_seq and returns the result as before:
ALTER SEQUENCE courses_course_id_seq RESTART WITH 5;
The above query, resets the auto-increment sequence for the course_id column in the courses table to start from 5,.
Output:
ALTER_SEQUENCE2. Using SETVAL and pg_get_serial_sequence:
The setval() function in PostgreSQL is used to set the value of a sequence.
Syntax:
SETVAL(sequence_name, next_value)
- sequence_name: is the name of the sequence you want to set the value for.
- next_value: is the new value you want to set the sequence to.
Example
The following query reset the primary key sequence ID in PostgreSQL, you can use the SETVAL function along with pg_get_serial_sequence.
-- Find the name of the sequence
SELECT pg_get_serial_sequence('courses', 'course_id');
-- Reset the sequence
SELECT setval('courses_course_id_seq', (SELECT MAX(course_id)+1 FROM courses));
In the above query, SELECT pg_get_serial_sequence('courses', 'course_id'); retrieves the name of the sequence associated with the course_id column in the courses table, and the second line SELECT setval('courses_course_id_seq', (SELECT MAX(course_id)+1 FROM courses)); resets the courses_course_id_seq sequence to start from the next value after the current maximum course_id in the courses table.
Output:
SETVALConclusion
In this article, we covered How to Reset the Primary Key Sequence ID in PostgreSQL. with the help of two method, first one is the ALTER SEQUENCE command. We understood the example of the ALTER SEQUENCE command. We later looked at Using SETVAL and pg_get_serial_sequence functions and understood the ease it provide. so now you can effectively reset the primary key sequence ID in PostgreSQL and maintain the integrity of your database.
Similar Reads
SQL Interview Questions Are you preparing for a SQL interview? SQL is a standard database language used for accessing and manipulating data in databases. It stands for Structured Query Language and was developed by IBM in the 1970's, SQL allows us to create, read, update, and delete data with simple yet effective commands.
15+ min read
SQL Tutorial SQL is a Structured query language used to access and manipulate data in databases. SQL stands for Structured Query Language. We can create, update, delete, and retrieve data in databases like MySQL, Oracle, PostgreSQL, etc. Overall, SQL is a query language that communicates with databases.In this S
11 min read
Non-linear Components In electrical circuits, Non-linear Components are electronic devices that need an external power source to operate actively. Non-Linear Components are those that are changed with respect to the voltage and current. Elements that do not follow ohm's law are called Non-linear Components. Non-linear Co
11 min read
SQL Commands | DDL, DQL, DML, DCL and TCL Commands SQL commands are crucial for managing databases effectively. These commands are divided into categories such as Data Definition Language (DDL), Data Manipulation Language (DML), Data Control Language (DCL), Data Query Language (DQL), and Transaction Control Language (TCL). In this article, we will e
7 min read
SQL Joins (Inner, Left, Right and Full Join) SQL joins are fundamental tools for combining data from multiple tables in relational databases. Joins allow efficient data retrieval, which is essential for generating meaningful observations and solving complex business queries. Understanding SQL join types, such as INNER JOIN, LEFT JOIN, RIGHT JO
6 min read
Normal Forms in DBMS In the world of database management, Normal Forms are important for ensuring that data is structured logically, reducing redundancy, and maintaining data integrity. When working with databases, especially relational databases, it is critical to follow normalization techniques that help to eliminate
7 min read
Spring Boot Tutorial Spring Boot is a Java framework that makes it easier to create and run Java applications. It simplifies the configuration and setup process, allowing developers to focus more on writing code for their applications. This Spring Boot Tutorial is a comprehensive guide that covers both basic and advance
10 min read
Class Diagram | Unified Modeling Language (UML) A UML class diagram is a visual tool that represents the structure of a system by showing its classes, attributes, methods, and the relationships between them. It helps everyone involved in a projectâlike developers and designersâunderstand how the system is organized and how its components interact
12 min read
ACID Properties in DBMS In the world of DBMS, transactions are fundamental operations that allow us to modify and retrieve data. However, to ensure the integrity of a database, it is important that these transactions are executed in a way that maintains consistency, correctness, and reliability. This is where the ACID prop
8 min read
Steady State Response In this article, we are going to discuss the steady-state response. We will see what is steady state response in Time domain analysis. We will then discuss some of the standard test signals used in finding the response of a response. We also discuss the first-order response for different signals. We
9 min read