Если вы используете механизм innoDB, вы можете использовать триггер, подобный следующему:
CREATE TRIGGER `your_table_before_ins_trig` BEFORE INSERT ON `your_table`
FOR EACH ROW
begin
declare next_id int unsigned default 1;
-- get the next ID for your Account Number
select max(ID) + 1 into next_id from your_table where Account = new.Account;
-- if there is no Account number yet, set the ID to 1 by default
IF next_id IS NULL THEN SET next_id = 1; END IF;
set new.ID= next_id;
end#
Примечание!ваш столбец-разделитель # в приведенном выше выражении sql!
Это решение работает для такой таблицы, как ваша, если вы создаете ее без какой-либо функции auto_increment, например:
CREATE TABLE IF NOT EXISTS `your_table` (
`ID` int(11) NOT NULL,
`Account` int(11) NOT NULL,
PRIMARY KEY (`ID`,`Account`)
);
Теперь вы можете вставить свои значения следующим образом:
INSERT INTO your_table (`Account`) VALUES (1);
INSERT INTO your_table (`Account`, `ID`) VALUES (1, 5);
INSERT INTO your_table (`Account`) VALUES (2);
INSERT INTO your_table (`Account`, `ID`) VALUES (3, 10205);
Это приведет к этому:
ID | Account
------------------
1 | 1
2 | 1
1 | 2
1 | 3