Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

Вопрос по MySQL

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных
Предыдущая тема :: Следующая тема  
Автор Сообщение
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'я -- это второе, а первое и третье -- вынужденная надстройка, к коей относится и переделка структур таблиц
Вернуться к началу
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Базы данных Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...