Open In App

How to Create id With AUTO_INCREMENT in PL/SQL?

PL/SQL, short for Procedural Language/Structured Query Language, combines SQL capabilities with procedural programming. It supports variable declaration, control flow structures, functions, records, cursors, procedures, and triggers.

PL/SQL features a block structure with optional sections for variable declarations and exception handling. Its execution section handles SQL queries seamlessly. Overall, PL/SQL offers a robust environment for developing database-centric applications with enhanced control and error-handling capabilities.



AUTO_INCREMENT id in Pl/SQL

Sometimes while creating a table we do not have a unique identifier within the table hence we face difficulty in choosing the Primary Key. To resolve such an issue, we’ve to provide unique keys to every record manually, but this is often also a tedious task. So we can use the Auto Increment feature that automatically generates a numerical Primary key value for every new record inserted. To use the auto-increment feature we have to make the auto-increment field with the sequence object which successively generates several sequences.

Syntax:



CREATE SEQUENCE sequence_name MINVALUE 1 START WITH 1

INCREMENT BY 1

CACHE 10;

In the above syntax,

How to Create Auto Incrementing IDs in PL/SQL

When working with PL/SQL, generating unique IDs for database records can be cumbersome. To streamline this process, two methods are commonly employed: using sequences or triggers.

1. Using Sequences

Sequences are objects in PL/SQL that generate unique numeric values. They are particularly useful for auto-incrementing IDs in tables.

Syntax:

CREATE SEQUENCE sequence_name

START WITH 1

INCREMENT BY 1;

Example:

SET  SERVEROUTPUT ON;

CREATE SEQUENCE player_seq MINVALUE 1 START WITH 1
INCREMENT BY 1 NOCACHE ;

CREATE TABLE PLAYER1(ID NUMBER PRIMARY KEY , NAME VARCHAR(30), SCORE NUMBER );

INSERT INTO PLAYER1 (ID, NAME, SCORE) VALUES (player_seq.nextval, 'Ellyse Perry', 347);
INSERT INTO PLAYER1 (ID, NAME, SCORE) VALUES (player_seq.nextval, 'Smriti Mandhana', 300);
INSERT INTO PLAYER1(ID, NAME, SCORE) VALUES (player_seq.nextval, 'Shafali Verma', 309);
INSERT INTO PLAYER1 (ID, NAME, SCORE) VALUES (player_seq.nextval, 'Deepti Sharma', 295);
INSERT INTO PLAYER1 (ID, NAME, SCORE) VALUES (player_seq.nextval, 'Harmanpreet Kaur', 268);

SELECT * FROM PLAYER1;

Output:

Auto Increment in PLSQL

Explanation:

2. Using Trigger to AUTO_INCREMENT id in Pl/SQL

PL/SQL triggers are block structures and predefined programs invoked automatically when some event occurs. They are stored in the database and invoked repeatedly in a particular scenario.To auto increment the ID, we will use BEFORE conditional trigger so that it is activated as the user try to insert the row into the table.

Syntax:

CREATE SEQUENCE sequence_name

START WITH 1

INCREMENT BY 1;

CREATE OR REPLACE TRIGGER trigger_name

BEFORE INSERT ON table_name

FOR EACH ROW

BEGIN

SELECT sequence_name.NEXTVAL INTO :NEW.ID FROM DUAL;

END;

/

Example:

SET SERVEROUTPUT ON;

CREATE SEQUENCE play_id START WITH 1 INCREMENT BY 1;

CREATE TABLE PLAYER1(ID NUMBER PRIMARY KEY , NAME VARCHAR(30), SCORE NUMBER );

CREATE OR REPLACE TRIGGER id_trigger
BEFORE INSERT ON PLAYER1
FOR EACH ROW
BEGIN
SELECT play_id.NEXTVAL INTO :NEW.ID FROM DUAL;
END;
/

INSERT INTO PLAYER1 (NAME, SCORE) VALUES ('Ellyse Perry', 347);
INSERT INTO PLAYER1 ( NAME, SCORE) VALUES ('Smriti Mandhana', 300);
INSERT INTO PLAYER1 (NAME, SCORE) VALUES ('Shafali Verma', 309);
INSERT INTO PLAYER1 (NAME, SCORE) VALUES ('Deepti Sharma', 295);
INSERT INTO PLAYER1 (NAME, SCORE) VALUES ('Harmanpreet Kaur', 268);

SELECT * FROM PLAYER1;

Output:

Auto-Increment in PLSQL

Explanation:

Conclusion

In conclusion, we explored two methods to auto-increment IDs in PL/SQL tables: using sequences and triggers. Both approaches offer efficient ways to manage unique identifiers and streamline database operations. Whether you prefer the simplicity of sequences or the flexibility of triggers, PL/SQL provides powerful tools for ID management in database tables.


Article Tags :