[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: primary key и auto increment
Ka4_0k
Здравствуйте.
Есть таблица вида
+--------+
| f1| f2|
+--------+
| 1 | 1 |
+--------+
| 1 | 2 |
+--------+
| 2 | 1 |
+--------+
| 2 | 2 |
+--------+
| 2 | 3 |
+--------+

.............
Тоесть поля f1 и f2
При этом f1 это индекс для джойна ещё одной таблицы, а поле f2 должно при вставке иметь авто инкремент относительно первого поля. Тоесть например для первого поля значения 1 и 2 уникальны, и, если при будет вставка с f1 равняется 1, то f2 должно автоматически увеличится на 1 (т.е. 3), но если f1 будет равняться 2, то, соответственно, f2 должно вставится как 4.
Возможно ли такое, и как его осуществить?
Просто проставления priamry ключа для двух полей при включеном авто инкременте на втором поле не помогает...



Спустя 2 минуты, 24 секунды (13.05.2010 - 13:08) jetistyum написал(а):
может не верно спроектирована база данных?

Спустя 1 минута, 26 секунд (13.05.2010 - 13:09) glock18 написал(а):
попробуй auto_increment на оба поля

Спустя 3 минуты, 58 секунд (13.05.2010 - 13:13) Ka4_0k написал(а):
Цитата
попробуй auto_increment на оба поля

Мне нужно только второе авто инкементарное
Цитата
может не верно спроектирована база данных?

Это именно тот случай когда нужна именно такая связь smile.gif Я понял что ты имеешь в виду, но этот вариант мне не подходит.

Спустя 2 минуты, 59 секунд (13.05.2010 - 13:16) jetistyum написал(а):
тогда предварительно запросом выбираешь последнее поле, блокируешь таблиуц, увеличиваешь, вставляешь новое значение, разблокируешь...... автоинкремент мне кажется тут не покатит .... разве только может какая-то мускульная процедура, но я в этом не силён...

Спустя 8 минут, 58 секунд (13.05.2010 - 13:25) Michael написал(а):
Помоему только в MyISAM такое есть:

create table xxx(
proj varchar(20) not null,
och int unsigned not null auto_increment,
description varchar(100),
primary key(proj, och)) type = MYISAM;


- для каждого значения первого столбца ключа генерируется счетчик с начала.

Спустя 16 минут, 40 секунд (13.05.2010 - 13:42) waldicom написал(а):
Или триггером...

Спустя 14 минут, 11 секунд (13.05.2010 - 13:56) Ka4_0k написал(а):
Цитата
Помоему только в MyISAM такое есть:

create table xxx(
proj varchar(20) not null,
och int unsigned not null auto_increment,
description varchar(100),
primary key(proj, och)) type = MYISAM;



- для каждого значения первого столбца ключа генерируется счетчик с начала.

Спасибо большое. У меня поля местами стояли наоборот (первое было с инкрементом), поэтому и не считало.


_____________
-Oh My God! They Killed Kenny!
-You Bastards!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.