Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2011, 09:31   #1
tokloo
 
Регистрация: 03.09.2010
Сообщений: 8
По умолчанию Возврат первичного ключа

после очистки таблицы первичный ключ исчесляется с прежнего места, как вернуть его на 1?
tokloo вне форума Ответить с цитированием
Старый 12.08.2011, 10:07   #2
mrgrudge
Форумчанин
 
Аватар для mrgrudge
 
Регистрация: 20.02.2010
Сообщений: 229
По умолчанию

если есть phpMyadmin, то заходишь в таблицу-> операции-> там есть поле AUTO_INCREMENT в котором лежит последний записаный id, как осуществить это с помощью sql запроса думаю гугл ответит
думай как баг, действуй как баг, и ты найдешь баг )
mrgrudge вне форума Ответить с цитированием
Старый 12.08.2011, 11:00   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от tokloo
после очистки таблицы первичный ключ исчесляется с прежнего места, как вернуть его на 1?
tokloo, ЗАЧЕМ ???!!

Единственное требование к первичному ключу - это его УНИКАЛЬНОСТЬ!
Всё! Нельзя к нему привязывать какие-то свои аттрибуты!! (ну, например, номер документа и т.п.) НЕЛЬЗЯ!
Заводите отдельное поле и делайте с ним что хотите. Хоть обнуляйте, хоть наращивайте, хоть что.. И оставьте в покое первичный ключ.


сорри, если был излишне эмоционален...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.08.2011, 11:27   #4
tokloo
 
Регистрация: 03.09.2010
Сообщений: 8
По умолчанию

спс, а то я не знал про переменую эту, сейчас уже нашел как ее изменять

Serge_Bliznykov, ты меня не так понял, я удалил несколько строк в конце таблицы, во и хочу изменить AUTO_INCREMENT, чтобы он мне следующие записи не 40 какие-нибуть ставил, а следующим номером по порядку от наибольшего в таблице

сейчас попробую проверку в скрипт записи в БД добавить и при надобности пусть правит AUTO_INCREMENT
tokloo вне форума Ответить с цитированием
Старый 12.08.2011, 11:39   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Serge_Bliznykov, ты меня не так понял, я удалил несколько строк в конце таблицы, во и хочу изменить AUTO_INCREMENT, чтобы он мне следующие записи не 40 какие-нибуть ставил, а следующим номером по порядку от наибольшего в таблице
я Вас прекрасно понял.
А вот Вы меня - нет!

моя основная мысль - это то, что каждая запись в таблице должна иметь свой уникальный (первичный) ключ.
Пусть это будут такие, например, ключи: 1, 2, 54, 87, 34, 32, 2000, 7, 55, 56....
И всё нормально.
Ещё раз. Они должны быть уникальны. Точка.
Поймите, что большего от ключа ничего и не требуется.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.08.2011, 14:20   #6
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

Да только заводить ещё одно поле для порядкового номера излишество
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 12.08.2011, 14:44   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Да только заводить ещё одно поле для порядкового номера излишество
глупости...
не надо смешивать мух и котлеты!

поясню немножко..
Первичный ключ должен быть. Тут, надеюсь, вопросов/противоречий не возникает?..

Нужны Вам ещё какие-то естественные ключи - номер документа, инн организации, порядковый номер заявки - да что угодно - создавайте нужные поля и пользуйтесь ими как хотите. Первичный ключ - не трогайте!

И избежите кучи ненужных проблем, косяков, глюков, переделок структуры БД, криков, как это, два одинаковых номера договора НЕ МОЖЕТ БЫТЬ, что же Вы сразу не сказали и т.д. и т.п...
Уж поверьте моему (и не только моему) опыту...


В качестве дополнительной информации могу порекомендовать статью Анатолия Тенцера "Естественные ключи против искуственных ключей"
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.08.2011, 15:15   #8
TranceSmile
Смайлик :)
Форумчанин
 
Аватар для TranceSmile
 
Регистрация: 12.12.2010
Сообщений: 445
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
глупости...
не надо смешивать мух и котлеты!

поясню немножко..
Первичный ключ должен быть. Тут, надеюсь, вопросов/противоречий не возникает?..

Нужны Вам ещё какие-то естественные ключи - номер документа, инн организации, порядковый номер заявки - да что угодно - создавайте нужные поля и пользуйтесь ими как хотите. Первичный ключ - не трогайте!

И избежите кучи ненужных проблем, косяков, глюков, переделок структуры БД, криков, как это, два одинаковых номера договора НЕ МОЖЕТ БЫТЬ, что же Вы сразу не сказали и т.д. и т.п...
Уж поверьте моему (и не только моему) опыту...


В качестве дополнительной информации могу порекомендовать статью Анатолия Тенцера "Естественные ключи против искуственных ключей"
А можно ли узнать примеры глюков или косяков???
Самый перспективный framework Yii (c)
TranceSmile вне форума Ответить с цитированием
Старый 12.08.2011, 16:06   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
А можно ли узнать примеры глюков или косяков???
ну, посмотрите, например, такую тему
ID в таблице
как Вы думаете, откуда возник такой вопрос у автора темы?

из собственной реальной практики - сейчас вряд ли вспомню ВСЕ замеченные косяки/проблемы...
ну, так, навскидку. Есть регистрация и выдача неких технических условий.
В номере техусловия присуствует порядковый номер (там сложный длинный код, в котором закодировно предприятие, подразделение и порядковый номер... Этот порядковый номер был единый в рамках предприятия (логично же, да - брался по auto_increment (в Oracle использовался sequence)) и всё было хорошо. пока в один прекрасный момент не было объявлено, что по каждому подразделению нумерация должна вестись ОТДЕЛЬНО. В результате изменение структур БД (отдельная таблица, где по каждому подразделению ведётся своя нумерация), изменение ряда процедур и функций и т.д.

поверьте мне, не всегда экономия пары-тройки байт стоит кучи времени и сил...

впрочем, учитывать это или не учитывать это в своей работе - дело ваше.
Как говаривала одна знакомая: "Пока не попаду под трамвай - не поверю, что это больно"...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.08.2011, 20:27   #10
tokloo
 
Регистрация: 03.09.2010
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
В качестве дополнительной информации могу порекомендовать статью Анатолия Тенцера "Естественные ключи против искуственных ключей"
хм... интересная статья

Цитата:
В общем-то, выводы очевидны – введение СК позволяет получить лучше управляемую, более компактную и быстродействующую БД. Разумеется, это не панацея. В некоторых случаях (например, таблица на которую нет REFERENCES и в которую осуществляется интенсивная вставка данных и т.п.) более верно использовать ЕК...
tokloo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подбор ключа Shurik(c) Помощь студентам 3 05.06.2011 15:50
Создание ключа Молоток Общие вопросы Delphi 10 14.04.2011 08:19
Delphi считывание значения первичного ключа world12_tk Помощь студентам 10 22.03.2011 09:23
вывод первичного ключа ZBoris SQL, базы данных 3 09.02.2009 17:38
Ввод ключа! }{oт@бь)ч Общие вопросы Delphi 9 08.02.2009 12:11