Показать сообщение отдельно
Старый 04.11.2011, 12:11   #19
shybovycha
ПроЭктировщик
 
Аватар для shybovycha
 
Регистрация: 27.05.2007
Сообщений: 110
Написано 40 полезных сообщений
(для 33 пользователей)
Ответ: Определить количество записей, вставить запись?

Мы с вами точно говорим об одном и том же?

Моя точка зрения:

Пускай даны записи ((1, *), (2, *), (3, *), (4, *), (5, *), (6, *), (7, *), (8, *), (9, *), (10, *)).
Ваш алгоритм работает - mysql_insert_id() возвращает 10, добавление не происходит.

Но вот в какой-то момент исчезают записи (3,*), (7,*), (4,*). Имеем теперь набор ((1, *), (2, *), (5, *), (6, *), (8, *), (9, *), (10, *)).
mysql_insert_id()
по-прежнему возвращает 10, алгоритм не работает - запись добавить-то можно.

В PostgreSQL немного иной принцип работы этих счетчиков - можно оперировать ими как необходимо то. В MySQL этого нет, посему есть лишь два способа переопределить поведение поля auto_increment:
  • truncate table - удаляет все записи из таблицы и обнуляет счетчик
  • вручную перебрать все записи и позадавать им новые значения поля. Но при этом необходимо либо иметь триггер, который будет обновлять все зависимые записи, либо предусмотреть запросы на ручное исправление зависимостей
А что имеете ввиду вы?
(Offline)
 
Ответить с цитированием