2012-05-23 4 views
0

В основном в заголовке указано, что я пытаюсь сделать. Руководство mysql описывает, как оно должно работать здесь: http://dev.mysql.com/doc/refman/5.1/en/example-auto-increment.htmlСоздайте таблицу с auto_increment на основе другого столбца

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

$sql = "CREATE TABLE $table_name (
    id MEDIUMINT(9) NOT NULL AUTO_INCREMENT, 
    block VARCHAR(30) NOT NULL, 
    issue_number MEDIUMINT(9) NOT NULL AUTO_INCREMENT, 
    date BIGINT(30), 
    UNIQUE (id), 
    PRIMARY KEY (block, issue_number) 
);"; 
+1

У вас не может быть 2 AUTO_INCREMENT в одной таблице. – JHS

ответ

2

Я думаю, что нет никакой posibilites не иметь более одного столбец Autoincrement в одной таблице. Используйте:

$sql = "CREATE TABLE $table_name (
    id MEDIUMINT(9) NOT NULL, 
    block VARCHAR(30) NOT NULL, 
    issue_number MEDIUMINT(9) NOT NULL AUTO_INCREMENT, 
    date BIGINT(30), 
    UNIQUE (id), 
    PRIMARY KEY (block, issue_number) 
);" 
+0

Но в соответствии с вашим SQL-идентификатором colmn UNIQUE и сложным индексом будет неисправность – odiszapc

+0

Мне просто нужно вручную увеличить id на основе предыдущего значения. Спасибо за ответ. – MirroredFate

1

может быть только одна автоматическая колонка и она должна быть определена в качестве ключа, ниже одного работает

CREATE TABLE table_name (
    id MEDIUMINT(9) NOT NULL AUTO_INCREMENT, 
    block VARCHAR(30) NOT NULL, 
    issue_number MEDIUMINT(9) NOT NULL , 
    date BIGINT(30), 
    UNIQUE (id), 
    PRIMARY KEY (block, issue_number) 
) 
0

Как другие говорили, только один auto_increment -column допускается. Вы можете попытаться увеличить свой id в insert-statement.

insert into $table_name (id) values (1) on duplicate key update id = id + 1; 

но, возможно, не самое лучшее решение ..

0

Вы можете создать таблицу MyISAM с авто увеличивается issue_number поле, например, -

CREATE TABLE table_name(
    id MEDIUMINT(9) NOT NULL, 
    block VARCHAR(30) NOT NULL, 
    issue_number MEDIUMINT(9) NOT NULL AUTO_INCREMENT, 
    date BIGINT(30), 
    UNIQUE (id), 
    PRIMARY KEY (block, issue_number) 
) 
ENGINE = MYISAM; 
Смежные вопросы