2013-11-26 6 views
0

У меня сейчас очень неприятная проблема. Я хочу таблицу со следующей спецификацией:MySql AUTO_INCREMENT в INNODB Двигатель как второй столбец

CREATE TABLE `test` (
    `client` INT NOT NULL , 
    `id` INT NOT NULL AUTO_INCREMENT , 
    `test` INT NOT NULL , 
    PRIMARY KEY ( `client` , `id`) , 
    INDEX ( `test`) 
) ENGINE = INNODB; 

Вы можете видеть, что у меня есть первичный ключ с 2 столбцами. теперь я хочу, чтобы столбец id auto_increment увеличивался только для первого столбца. например:

## client/id ## 
1/1 
1/2 
1/3 
2/1 
2/2 
2/3 

т.д.

это действительно невозможно с InnoDB? Мне нужно innodb из-за транзакционных функций.

+0

Это было бы невозможно, используя чистый SQL. Я предлагаю вам использовать php для проверки самого высокого идентификатора для этого клиента до того, как вы вставьте новую строку. – Daan

ответ

0

Вы можете получить его легко в ЗЕЬЕСТЕ

set @sno:=0; 
set @client:=''; 
select @sno:=case when @client=client then @sno+1 else 1 end as sno, 
@client:=client as client_id from table order by client; 
Смежные вопросы