Quantcast
Channel: CodeFari
Viewing all articles
Browse latest Browse all 265

Does PostgreSQL automatically generate an id for every row?

$
0
0
When I was started work on the PostgreSQL, crating first time a table, I become stuck on the Identity column because I was familiar with the MS SQL Server. So, first of all, I search the question, "Does Postgres automatically generate an id for every row?". 
The answer is Yes.
There are several ways you can generate the identity column in PostgreSQL, and some examples are given below

1- SERIAL and BIGSERIAL

Using serial and bigserial you can generate the identity column
Example:

--For the SERIAL
CREATETABLEemployee
(
       empidserialNOTNULL,-- It's generate for the int
       nametext,
       addresstext,
       constraintpk_employee_empidPrimarykey(empid)
);
--Insert some records
INSERTINTOemployee(name,address)VALUES('Naina','Noida');
INSERTINTOemployee(name,address)VALUES('Ashish','Delhi');
--Now select statement
SELECT*FROMemployee;


In result you can see the ID is auto generates and increment by one
Result:


Same thing will happen with bigserial

--For the BIGSERIAL
CREATETABLEemployee
(
       empidbigserialNOTNULL,-- it generate for the bigint
       nametext,
       addresstext,
       constraintpk_employee_empidPrimarykey(empid)
);



2- GENERATED ALWAYS AS IDENTITY

Using GENERATED ALWAYS AS IDENTITY key we can generate the identity column, it automatically assign a unique value to a column which introduced as a new feature in PostgreSQL version 10.
Run the following query to re-create the employee table.


DROPTABLEIFEXISTSemployee;
CREATETABLEemployee
(
    empidINTGENERATEDALWAYSASIDENTITY,
    nametextnotnull,
       addresstext,
       constraintpk_employee_empidPrimarykey(empid)
);
Insertsomerecords
INSERTINTOemployee(name,address)VALUES('Naina','Noida');
INSERTINTOemployee(name,address)VALUES('Ashish','Delhi');


Result:



Viewing all articles
Browse latest Browse all 265

Trending Articles