Background documentationNumber Generator for a Single Table Column Locate this document in the navigation structure


You can use the DEFAULT specification SERIAL(n) to create a number generator (automatically generated sequence of numbers) for a table column. This is commonly used for generating a primary key, for example.


You can use the demo data for the SQL tutorial. Start the Database Studio as database administrator MONA with the password RED and log on to demo database DEMODB: Logging On to a Database.


You can use Database Studio to enter and execute SQL statements. More information: Working with SQL Statements: Overview

Creating a Number Generator

Create the pers3 table with the DEFAULT specification SERIAL(n). If you use the keyword SERIAL without specifying a number, the default value for the start of the number generator is 1. If you want to start the number generator with the number n, you have to enter the number n explicitly after the keyword SERIAL: SERIAL(n).

CREATE TABLE hotel.pers3



CREATE TABLE hotel.pers3

  (pno SERIAL PRIMARY KEY, name CHAR (20))

As the data type SERIAL is displayed in the form of FIXED(10) DEFAULT SERIAL, both CREATE TABLE statements return the same definition for the pers3 table. The first value generated by the number generator is the number 1.

See also: SQL Reference Manual, DEFAULT Specification (default_spec), Data type (data_type)

Using the Number Generator

You can use the number generator in the pno column in your application. You do not need to enter a value for the SERIAL column in INSERT statements; this is generated by the number generator.

The first value generated by the number generator in the example above is a 1. The value in the SERIAL column increases by 1 with each additional insertion of a value into the table.

INSERT hotel.pers3 (name) VALUES ('Baker')


INSERT hotel.pers3 (name) VALUES ('Miller')


SELECT * FROM hotel.pers3








A column with the DEFAULT specification SERIAL cannot be changed.

A column with the DEFAULT specification SERIAL can also be a foreign key column. Such columns are actually ideally suited to this purpose as their values cannot be changed and are only used in the application for the purposes specified in the application logic applied to the column.

Displaying the Current Value of the Number Generator

You can use the DUAL table, which is automatically generated by the database system, to display the current value of the number generator. The DUAL table can be used by all database users. As the DUAL table has only one row, you can use it to display the value of the number generator using a SELECT statement.

You can query the current value of the number generator using <table_name>.CURRVAL where <table_name> is the name of the table that contains the DEFAULT specification SERIAL.

SELECT hotel.pers3.CURRVAL FROM dual





More Information

Number Generators for Tables

More examples for Data Definition