не уникальный автоинкремент

gonza

Новичок
не уникальный автоинкремент

Знаю что туплю, но поиском не решилось.
Можно ли одним sql запросом вставить строку с id большим на единицу максимального id уже имеющегося в таблице?
Автоинкремент не подходит поскольку столбец не уникален.
Пока что сделал несколькими запросами с транзакциями. Хочется одним.
 

Garret

Кто здесь?
Можно ли одним sql запросом вставить строку с id большим на единицу максимального id уже имеющегося в таблице?
Автоинкремент не подходит поскольку столбец не уникален.
Мне кажется ты сам себе противоречишь. В случае вставки +1, значения все равно же будут уникальными.
 

Gorynych

Посетитель PHP-Клуба
не совсем понятно, что Вы на самом деле делаете, но, возможно, Вам чем-то подойдет такой способ:
Код:
INSERT INTO [i]таблица[/i] (поле1, поле2, ...) SELECT max(поле1), значение2, ... FROM [i]таблица[/i]
это не то чтобы совет, просто напоминание о конструкции INSERT ... SELECT, не очень понятно, что на самом деле Вам нужно.
 

gonza

Новичок
>> объясняй предысторию

у каждой строки - свой id(уникальный) но при этом необходимо отслеживать историю изменений этой записи.

я предполагаю хранить записи с ид и таймстампом.
То есть при изменении строки вносится новая с тем же ид но новым стампом.

В таком раскладе уникальность ид теряется и автоинкремент не получается.

Совсем издалека - это бухгалтерия. Не посылайте в 1С, ибо уже оттуда. Привожу к человеческому виду нестандартную конфигурацию.
Сущности, о которых идет речь - различные коэффициенты. Время от времени меняются. При этом история изменений важна, т.к. документы, использующие их, должны получать значение коэффициента на момент создания документа.
Форма хранения множеств коэффициентов - деревья и таблицы.
В общих чертах все. Надеюсь объяснил внятно.

-~{}~ 09.04.07 12:35:

Код:
INSERT INTO таблица (поле1, поле2, ...) SELECT max(поле1), значение2, ... FROM таблица
Нет
Целевая таблица команды INSERT не должна появляться в утверждении FROM части SELECT данного запроса, поскольку в ANSI SQL запрещено производить выборку из той же таблицы, в которую производится вставка.
 

phprus

Moderator
Команда форума
gonza
у каждой строки - свой id(уникальный) но при этом необходимо отслеживать историю изменений этой записи.
Я бы сделал 2 таблицы. В одной id уникальное и автоинкрементное. В этой таблице храниться общая и неизменная для всех версий информация. 2-я таблица содержит не уникальное поле id, поле времени добавления и непосредственно нужные данные. На каждую версию в этой 2-й таблице создается отдельная запись. Обе таблицы связаны по их полям id как один-ко-многим.
 

gonza

Новичок
Автор оригинала: phprus
gonza

Я бы сделал 2 таблицы. В одной id уникальное и автоинкрементное. В этой таблице храниться общая и неизменная для всех версий информация.
Инертность мышления(моя)
В одной ид и аттрибуты. В другой история изменений. Должен был додуматься. Добавление записи и изменение записи - совершенно разные с точки зрения этого приложения действия. Вполне заслуживают двух разных таблиц. Да. Спасибо.
 
Сверху