2

I have a table Persons with columns PersonId, FirstName, DeptId and City. The PersonId is a Primary Key.

By default on first insert, I want the first entry for the DeptId to have a value of 3000. And the subsequent entries should always increment on the last value of DeptId.

Can someone please help me with that in MySQL ?

1 John 3000 Port Mathurin
2 James 3001 Port Desny

insert into `Persons` (`PersonID`, `FirstName`, `DeptId`, `City`) VALUES (1, 'Job', select `DeptId` from `Persons` +1, 'Port Mathurin)
forpas
  • 160,666
  • 10
  • 38
  • 76
chatwa
  • 23
  • 3

1 Answers1

1

Instead of INSERT ... VALUES use INSERT ... SELECT to select the max DeptId from Persons:

INSERT INTO Persons (PersonID, FirstName, DeptId, City) 
SELECT 1, 'Job', COALESCE(MAX(DeptId), 2999) + 1, 'Port Mathurin' 
FROM Persons;

COALESCE() will return 2999 when the table is empty and with +1 the result will be 3000 for the DeptId of the 1st row of the table.

forpas
  • 160,666
  • 10
  • 38
  • 76