Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
epros Гость
|
Добавлено: Пн Мар 31 2003 17:25 Заголовок сообщения: Вопрос по MySQL |
|
|
Понадобилось мне к уже заполненной таблице добавить AUTO_INCREMENT поле. Естественно, в этом поле должны быть уникальные номера, но какие для какой конкретно записи - мне не важно. Создать поле с признаком AUTO_INCREMENT я не могу - оно должно быть связано с UNIQUE индексом, а UNIQUE индекс для этого поля я создать не могу потому, что созданное поле по умолчанию заполняется одинаковыми значениями.
Мне пришлось писать небольшой скрипт, который перебирает записи по одной (!) и записывает в новое поле очередной уникальный номер. Способа записи одним запросом уникальных номеров я не нашел. |
|
Вернуться к началу |
|
 |
Борис Гость
|
Добавлено: Пн Мар 31 2003 19:35 Заголовок сообщения: А где, собственно, "Вопрос по MySQL" :) (+) |
|
|
Вероятно, вопрос в том, что же за запрос заполняет поле уникальными значениями? Ответ -- нет такого запроса. Причина -- идеология SQL, которая изначально стремится к уникальным записям (то есть, чтобы не было дублирующейся информации), и, соответственно, таблицы сразу же делаются с полями, обеспечивающими уникальность записей. Если же таблица не такая, то предполагается, что проектировщик именно этого и хотел. Соответственно, чтобы произвести конверсию, то нужно вообще перепроектировать базу данных, а это принципиально не делается "одним запросом". |
|
Вернуться к началу |
|
 |
epros Гость
|
Добавлено: Вт Апр 01 2003 01:23 Заголовок сообщения: Странная это какая-то идеология :-) |
|
|
Проектировщик может хотеть, хотеть, а потом взять, да и перехотеть. Ан нет, поздно уже, надо всю базу рушить и заново пересоздавать?
Вряд ли это СПЕЦИАЛЬНО подразумевается идеологами SQL. Конечно бывают такие ситуации, когда косметические доработки существующей системы невозможны. Но насколько возможно, они должны поддерживаться. Не случайно в той же MySQL, которая далеко не все возможности ANSI SQL поддерживает, все же обеспечивается возможность переделки таблиц на уже работающих базах. Причем это делается по возможности с сохранением всех данных. Например, легко можно изменить типы существующих полей или добавить новые, удалить или добавить индексы.
А относительно уникальности записей - в общем-то и не предполагалось, что они будут дублироваться. Но это не означает, что каждая запись должна иметь числовой ID. Множество задач можно решать и без них. |
|
Вернуться к началу |
|
 |
Борис Гость
|
Добавлено: Вт Апр 08 2003 19:45 Заголовок сообщения: Re: Странная это какая-то идеология :-) |
|
|
SQL состоит из 3х частей: -язык манипуляции таблицами -язык манипуляции данными -язык манипуляции правами
Так вот по моему мнению суть собственно SQL'я -- это второе, а первое и третье -- вынужденная надстройка, к коей относится и переделка структур таблиц |
|
Вернуться к началу |
|
 |
|