Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

how to increment integer Columns value by 1 in SQL

People also ask

How do you increment a column by 1 in SQL?

The MS SQL Server uses the IDENTITY keyword to perform an auto-increment feature. In the example above, the starting value for IDENTITY is 1, and it will increment by 1 for each new record. Tip: To specify that the "Personid" column should start at value 10 and increment by 5, change it to IDENTITY(10,5) .

What does +1 do in SQL?

The statement 'select 1' from any table name means that it returns only 1. For example, If any table has 4 records then it will return 1 four times.

How do I create an existing column auto increment in SQL?

If you're looking to add auto increment to an existing table by changing an existing int column to IDENTITY , SQL Server will fight you. You'll have to either: Add a new column all together with new your auto-incremented primary key, or. Drop your old int column and then add a new IDENTITY right after.


To add one to every value in the table...

UPDATE myTable
SET ID = ID + 1

To create a new value, one more then the previous highest (usually), use a column with IDENTITY


If you want to have an unique number for each row automatically generated, this is IDENTITY as per Neil's answer.

If each time you update the table you want to increase the values (ie they are not keys):

Update MyTable
Set IDColumn = IDColumn + 1
Where <whatever>

Try this:

Update Emp set testCount = ISNULL(testCount, 0) + 1 where testId=1

In Oracle the code is a little bit more tricky.

You will have to create an auto-increment field with the sequence object (this object generates a number sequence).

Use the following CREATE SEQUENCE syntax:

CREATE SEQUENCE seq_person
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10

The code above creates a sequence object called seq_person, that starts with 1 and will increment by 1. It will also cache up to 10 values for performance. The cache option specifies how many sequence values will be stored in memory for faster access.

To insert a new record into the "Persons" table, we will have to use the nextval function (this function retrieves the next value from seq_person sequence):

INSERT INTO Persons (ID,FirstName,LastName)
VALUES (seq_person.nextval,'Lars','Monsen')

The SQL statement above would insert a new record into the "Persons" table. The "ID" column would be assigned the next number from the seq_person sequence. The "FirstName" column would be set to "Lars" and the "LastName" column would be set to "Monsen".


You can use IDENTITY which will do this for you.

CREATE TABLE [dbo].[MyTable](
    [MyTableID] [int] IDENTITY(1,1) NOT NULL,
    -- Other columns
)

When you insert your first record, you'll get an Id of 1.


You could try the following:

DECLARE @i INT
SET @i = @@ROWCOUNT + 1

INSERT INTO YourTable
        (Identity Column)    
VALUES    
        (@i + 1)

For postgresSQL

UPDATE myTable SET ID = COALESCE(id, 0) + 1;