Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как удалить автоиндекс / 21 сообщений из 21, страница 1 из 1
20.07.2006, 16:53
    #33867797
sysmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
Доброго всем дня.
Имеем IDS 9.40 TC6 Windows XP.
Можно как-то удалить автоиндекс?
Вот пример

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE tabx (
	id serial primary key ,
	computers char ( 40 ),
	price INTEGER,
	numorder INTEGER
	 );

INSERT INTO  tabx (computers, price, numorder) VALUES('sfasd',  2700 ,  87519 );
INSERT INTO  tabx (computers, price, numorder) VALUES('asdfgsfg',  2800 ,  458781 );

Имя автоиндекса получаю запросом
Код: plaintext
1.
2.
select * from sysindexes,systables 
where sysindexes.tabid = systables.tabid and
systables.tabname = 'tabx'

А вот как его собаку такую дропнуть?
...
Рейтинг: 0 / 0
20.07.2006, 17:38
    #33868013
Тан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
удалите primary key
...
Рейтинг: 0 / 0
21.07.2006, 09:25
    #33868841
sysmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
Что-то у меня через DROP INDEX и ALTER TABLE не получается.
Получилось дропнуть только через dbaccess.
Т.е. с помощью SQL-операторов удалть автоиндекс нельзя?
...
Рейтинг: 0 / 0
21.07.2006, 09:39
    #33868865
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
sysmasterЧто-то у меня через DROP INDEX и ALTER TABLE не получается.
Получилось дропнуть только через dbaccess.
Т.е. с помощью SQL-операторов удалть автоиндекс нельзя?Защита от идиота, информикс не позволяет констрейнту (P,F,U) существовать без индекса, поэтому удалить автоиндекс нельзя.
Создавайте таблицу, добавляйте свой индекс, потом уж констрейнт, тогда автоиндекса не будет.
...
Рейтинг: 0 / 0
21.07.2006, 09:45
    #33868871
sysmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
авторЗащита от идиота, информикс не позволяет констрейнту (P,F,U) существовать без индекса, поэтому удалить автоиндекс нельзя.
Создавайте таблицу, добавляйте свой индекс, потом уж констрейнт, тогда автоиндекса не будет.

Спасибо.
...
Рейтинг: 0 / 0
21.07.2006, 09:58
    #33868903
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
Журавлев ДенисЗащита от идиота, информикс не позволяет констрейнту (P,F,U) существовать без индекса, ....Хотя может это и не защита, а просто алгоритм проверки констрейнта таков, что без индекса не работает.
...
Рейтинг: 0 / 0
21.07.2006, 10:51
    #33869125
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
sysmasterЧто-то у меня через DROP INDEX и ALTER TABLE не получается.
Получилось дропнуть только через dbaccess.
Т.е. с помощью SQL-операторов удалть автоиндекс нельзя?
В предыдущем сообщении Тан ведь однозначно сказала, что удалить автоиндекс можно только удалив соответствующий констрейнт. Т.е. для удаления автоиндекса, созданного сервером для реализации ограничения первичного ключа, необходимо просто удалить это ограничение первичного ключа.
...
Рейтинг: 0 / 0
21.07.2006, 10:56
    #33869154
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
Журавлев Денис Журавлев ДенисЗащита от идиота, информикс не позволяет констрейнту (P,F,U) существовать без индекса, ....Хотя может это и не защита, а просто алгоритм проверки констрейнта таков, что без индекса не работает.
Если бы были еще способы проверки на уникальность без построения уникального индекса, то, возможно, они бы применялись, а так - построение индекса остается единственным МЕХАНИЗМОМ реализации ограничений первичного ключа, на уникальность и, заодно, и связности (вторичного ключа).
...
Рейтинг: 0 / 0
21.07.2006, 11:17
    #33869248
sysmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
vasilis , при всем моем к Вам уважении, как к Гуру Informix все же позвольте поспорить с Вами.
Я не случайно привел SQL-примеры, что бы желающие могли попробовать проделать все сами.

Повторюсь, что у меня не получилось ни с помощью drop index, ни с помощью alter table. Dbaccess рулит.
...
Рейтинг: 0 / 0
21.07.2006, 11:41
    #33869386
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
vasilisЕсли бы были еще способы проверки на уникальность без построения уникального индекса, то, возможно, они бы применялись, а так - построение индекса остается единственным МЕХАНИЗМОМ реализации ограничений первичного ключа, на уникальность и, заодно, и связности (вторичного ключа).
Механизм-то он есть -- sql:
Проверка на уникальность: select first 1 1 from table where pk=newvalue
Проверка на внешние: select first 1 1 from detailtable where fk=deleting_pk
Так и делает оффтопичная субд, но эффективность такого подхода ...
...
Рейтинг: 0 / 0
21.07.2006, 11:42
    #33869392
Тан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
sysmaster vasilis , при всем моем к Вам уважении, как к Гуру Informix все же позвольте поспорить с Вами.
Я не случайно привел SQL-примеры, что бы желающие могли попробовать проделать все сами.

Повторюсь, что у меня не получилось ни с помощью drop index, ни с помощью alter table. Dbaccess рулит.
приведите пример alter table, которым не получилось
...
Рейтинг: 0 / 0
21.07.2006, 11:43
    #33869397
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
sysmaster vasilis , при всем моем к Вам уважении, как к Гуру Informix все же позвольте поспорить с Вами.
Я не случайно привел SQL-примеры, что бы желающие могли попробовать проделать все сами.

Повторюсь, что у меня не получилось ни с помощью drop index, ни с помощью alter table. Dbaccess рулит.Дунул что-то хорошее? Поделишься?
...
Рейтинг: 0 / 0
21.07.2006, 12:23
    #33869591
sysmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
авторприведите пример alter table, которым не получилось
Чуствую, что мне придется признать, что я не знаю как удалить PRIMARY KEY.
Хотя внимательно просмотрел IBM Informix Guide to SQL: Syntax.

Я пытался удалить primary key так:
ALTER TABLE tabx DROP CONSTRAINT PRIMARY KEY (id) CONSTRAINT 141_59
и так
ALTER TABLE tabx DROP CONSTRAINT PRIMARY KEY (id)
и так
ALTER TABLE tabx DROP CONSTRAINT 141_59
и еще куча всяких комбинаций. Всегда получал сообщение об 201 ошибке (A syntax error has occurred.)

P.S. На мой взгляд разного рода подколы про траву здесь не совсем уместны.
Такого рода форумы не для того ли и созданы, что бы помогать? Как то давно я тут вообще задавал вопрос про то как сдеалть Информиксу шатдаун и заново запустить.
...
Рейтинг: 0 / 0
21.07.2006, 12:44
    #33869688
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
sysmaster
ALTER TABLE tabx DROP CONSTRAINT 141_59
и еще куча всяких комбинаций. Всегда получал сообщение об 201 ошибке (A syntax error has occurred.)Мне лень читать доку но я бы так попробовал:
ALTER TABLE tabx DROP CONSTRAINT " 141_59";
Пробел вначале автообъектов не забывай. Поэтому лучше имена констрейнтам и индексам самому давать, чтоб не мучаться позже. И юник констрейнты тоже не помешают поверх уникальных индексов.

Быстрая дока тут .

sysmaster
P.S. На мой взгляд разного рода подколы про траву здесь не совсем уместны.
Такого рода форумы не для того ли и созданы, что бы помогать? Как то давно я тут Просто я прочитал и понял так: ты опять требуешь sql который дропает автоиндекс, хотя вродебы согласился что нельзя. Пиши понятней что те нада,че ты хош.
...
Рейтинг: 0 / 0
21.07.2006, 13:10
    #33869827
sysmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
авторALTER TABLE tabx DROP CONSTRAINT " 141_59";

Не работает.

авторПросто я прочитал и понял так: ты опять требуешь sql который дропает автоиндекс, хотя вродебы согласился что нельзя.
:) Ок. Бывает.
Да я согласился, что нельзя через sql.
А вот vasilis говорит, что вроде как можно.
Хотя я тоже наверно не так понял его слова. :)

Думаю вопрос можно закрыть. Если его можно дропнуть через dbaccess, так черт с ним, пусть будет через dbaccess.

P.S. Всем спасибо за отклик.
...
Рейтинг: 0 / 0
21.07.2006, 13:26
    #33869902
Тан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
1. dbaccess все делает с помощью sql
2. ALTER TABLE tabx DROP CONSTRAINT " 141_59"; будет работать, если вы установите переменную DELIMIDENT, которая позволяет имена объектов базы данных писать в кавычках
3. ALTER TABLE tabx modify id serial; работает всегда
...
Рейтинг: 0 / 0
21.07.2006, 15:59
    #33870626
sysmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
И так история продолжается.
Я тут засел поэкспереминтировать с этим автоиндексом.
Итак:
Код: plaintext
1.
2.
3.
4.
5.
CREATE TABLE tabx (
	id serial 	 primary key,
	computers char ( 40 ),
	price INTEGER,
	numorder INTEGER
        );
Постоили таблицку
Заполнили ее.
Код: plaintext
1.
INSERT INTO  tabx (computers, price, numorder) VALUES('sfasd',  2700 ,  87519 );
INSERT INTO  tabx (computers, price, numorder) VALUES('asdfgsfg',  2800 ,  458781 );
Запрос
Код: plaintext
1.
2.
select * from sysindexes,systables 
where sysindexes.tabid = systables.tabid and
systables.tabname = 'tabx'
вернул нам (как я понимаю) имя автоиндекса ' 146_68' (без ковычек).
А вот запрос
Код: plaintext
1.
select tabname, constrname from sysconstraints, systables
where sysconstraints.tabid = systables.tabid

вернул нам имя сонстрейна 'u146_68'.
Переменную
Код: plaintext
DELIMIDENT
решил не выставлять.

Теперь делаю
Код: plaintext
ALTER TABLE tabx DROP CONSTRAINT u146_68;
И....

Запрос
Код: plaintext
1.
2.
select * from sysindexes,systables 
where sysindexes.tabid = systables.tabid and
systables.tabname = 'tabx'

Ничего не вернул.
...
Рейтинг: 0 / 0
21.07.2006, 16:18
    #33870727
Журавлев Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
sysmaster Ничего не вернул. Все правильно.
...
Рейтинг: 0 / 0
21.07.2006, 18:01
    #33871147
Чемберлен
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
sysmaster Ничего не вернул.

При удалении ограничения (первичного ключа, в данном случае), по имени, удаляется индекс, автоматически сзданный при добавлении ограничения. Если бы уникальный индекс был создан явно до добавления первичного ключа, он бы не был удален...

Вам же сразу сказали - удалять первичный ключ...
...
Рейтинг: 0 / 0
21.07.2006, 20:51
    #33871421
vasilis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
sysmaster vasilis , при всем моем к Вам уважении, как к Гуру Informix все же позвольте поспорить с Вами.
Я не случайно привел SQL-примеры, что бы желающие могли попробовать проделать все сами.
Повторюсь, что у меня не получилось ни с помощью drop index, ни с помощью alter table. Dbaccess рулит.
Я так понял, что теперь спорить уже не будете ? :)
Вроде как во всем разобрались... Или остались вопросы ?
...
Рейтинг: 0 / 0
24.07.2006, 09:26
    #33872827
sysmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как удалить автоиндекс
авторВроде как во всем разобрались..
Разобрался. :)
...
Рейтинг: 0 / 0
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как удалить автоиндекс / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]