powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Как удалить автоиндекс
21 сообщений из 21, страница 1 из 1
Как удалить автоиндекс
    #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
Как удалить автоиндекс
    #33868013
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
удалите primary key
...
Рейтинг: 0 / 0
Как удалить автоиндекс
    #33868841
Фотография sysmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то у меня через DROP INDEX и ALTER TABLE не получается.
Получилось дропнуть только через dbaccess.
Т.е. с помощью SQL-операторов удалть автоиндекс нельзя?
...
Рейтинг: 0 / 0
Как удалить автоиндекс
    #33868865
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysmasterЧто-то у меня через DROP INDEX и ALTER TABLE не получается.
Получилось дропнуть только через dbaccess.
Т.е. с помощью SQL-операторов удалть автоиндекс нельзя?Защита от идиота, информикс не позволяет констрейнту (P,F,U) существовать без индекса, поэтому удалить автоиндекс нельзя.
Создавайте таблицу, добавляйте свой индекс, потом уж констрейнт, тогда автоиндекса не будет.
...
Рейтинг: 0 / 0
Как удалить автоиндекс
    #33868871
Фотография sysmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗащита от идиота, информикс не позволяет констрейнту (P,F,U) существовать без индекса, поэтому удалить автоиндекс нельзя.
Создавайте таблицу, добавляйте свой индекс, потом уж констрейнт, тогда автоиндекса не будет.

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

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

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

Повторюсь, что у меня не получилось ни с помощью drop index, ни с помощью alter table. Dbaccess рулит.Дунул что-то хорошее? Поделишься?
...
Рейтинг: 0 / 0
Как удалить автоиндекс
    #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
Как удалить автоиндекс
    #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
Как удалить автоиндекс
    #33869827
Фотография sysmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторALTER TABLE tabx DROP CONSTRAINT " 141_59";

Не работает.

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

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

P.S. Всем спасибо за отклик.
...
Рейтинг: 0 / 0
Как удалить автоиндекс
    #33869902
Фотография Тан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. dbaccess все делает с помощью sql
2. ALTER TABLE tabx DROP CONSTRAINT " 141_59"; будет работать, если вы установите переменную DELIMIDENT, которая позволяет имена объектов базы данных писать в кавычках
3. ALTER TABLE tabx modify id serial; работает всегда
...
Рейтинг: 0 / 0
Как удалить автоиндекс
    #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
Как удалить автоиндекс
    #33870727
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sysmaster Ничего не вернул. Все правильно.
...
Рейтинг: 0 / 0
Как удалить автоиндекс
    #33871147
Чемберлен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sysmaster Ничего не вернул.

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

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


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