powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / глюк Pl-sql developer'а
25 сообщений из 105, страница 1 из 5
глюк Pl-sql developer'а
    #40015501
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую в своей работе pl-sql developer.
Попытался с помощью него изменить определение уникального ключа на таблице.
Выскочила ошибка и ключ вообще пропал, т.е. в режиме редактирования или просмотра определения таблицы в закладке Ключи в списке его теперь нет, но если нажать на кнопку Посмотреть SQL, то в скрипте его определение появляется.

Я пытаюсь удалить этот ключ

ALTER TABLE tbl_name
DROP CONSTRAINT cnstr_name;

Пишет, что ключа с таким именем нет.

Смотрю список всех констрейнтов:

select * from all_constraints c where c.CONSTRAINT_NAME='cnstr_name';
ну или так
select * from all_constraints c where c.TABLE_NAME='tbl_name';

ключа нет.

Но он есть и действует, потому что когда я пытаюсь вставить в таблицу что то удовлетворяющее его ограничением, то оракл выдаёт мне ошибку что сработал уникальный ключ и в тексте ошибки присутствует имя этого якобы удалённого ключа.

Как можно гарантированно очистить базу от этого ключа?
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015510
Allbest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а)название темы некорректное. Ни о чем не говорит.
б)чудес не быает (по крайней мере, с констрэйнтами). под чудом таки понимаю ошибку вендора субд
в)кроме вью all_ бывают вью dba_, которые не подразумевают ограничения по правам
г)констрэйнты надо искать не по имени, а по столбцам задействованных таблиц
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015515
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема решилась.

Когда создаётся уникальный ключ, т.е. уникальный констраент, то автоматом создаётся ещё и индекс.
В Pl-SQL developer'е нужно сначала удалить этот индекс, а потом только ключ, иначе ключ удалится, а индекс останется и констрейнт будет продолжать работать.
Я ошибся, когда смотришь определение таблицы, то в скрипте на самом деле было видно определение индекса, а не констрейнта.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015517
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verter,
upper не пробовали?

... c.CONSTRAINT_NAME=upper('cnstr_name');

ps
гляньте все констраинты на табличке
зыы
констраинта может и "не быть", индекс не даст добавить строку
гляньте индексы

.....
stax
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015519
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
verter,
upper не пробовали?

... c.CONSTRAINT_NAME=upper('cnstr_name');

ps
гляньте все констраинты на табличке
зыы
констраинта может и "не быть", индекс не даст добавить строку
гляньте индексы

.....
stax


upper, конечно пробывал и без upper вызывал же список всех констрентов таблицы, все выдавались кроме искомого.

ну а с индексами нужно же было сначала догадаться.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015520
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verter
ключа нет.
Но он есть и действует, потому что когда я пытаюсь вставить в таблицу что то удовлетворяющее его ограничением, то оракл выдаёт мне ошибку что сработал уникальный ключ
Ограничение уникальности технически реализуется посредством уникального индекса.
Такой индекс либо создаётся автоматически при создании ограничения, либо существует заранее.
Во втором случае уникальный индекс не удаляется автоматически при удалении ограничения уникальности. Типичный сценарий второго случая - импорт.
verter
Как можно гарантированно очистить базу от этого ключа?
Всегда указывать drop index. RTFM drop_constraint_clause
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015521
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
verter
ключа нет.
Но он есть и действует, потому что когда я пытаюсь вставить в таблицу что то удовлетворяющее его ограничением, то оракл выдаёт мне ошибку что сработал уникальный ключ
Ограничение уникальности технически реализуется посредством уникального индекса.
Такой индекс либо создаётся автоматически при создании ограничения, либо существует заранее.
Во втором случае уникальный индекс не удаляется автоматически при удалении ограничения уникальности. Типичный сценарий второго случая - импорт.
verter
Как можно гарантированно очистить базу от этого ключа?
Всегда указывать drop index. RTFM drop_constraint_clause


Спасибо. Именно так и вышло.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015588
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
Ограничение уникальности технически реализуется посредством уникального индекса.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015759
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Elic
Ограничение уникальности технически реализуется посредством уникального индекса.
Напрасно нагнетаешь глубину "техничности". dup_val не из воздуха берётся.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015764
Allbest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чтобы не было подобных проблем, по идее, не стоит городить дополнительной сущноти - констрэйнта. достаточно создавать индекс
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015774
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic,


Кроме автоматического создания уникального индекса, объявление первичного ключа ещё как-то влияет на таблицу, или это чисто декоративный ярлык для помечания "главной" колонки?
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015779
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Allbest
чтобы не было подобных проблем, по идее, не стоит городить дополнительной сущноти - констрэйнта. достаточно создавать индекс
Бред.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015780
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Кроме автоматического создания уникального индекса, объявление первичного ключа ещё как-то влияет на таблицу, или это чисто декоративный ярлык для помечания "главной" колонки?
Глубина пропасти твоего невежества чудовищна. Нет смысла бросать туда жемчуга.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015781
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
andrey_anonymous
пропущено...
Напрасно нагнетаешь глубину "техничности". dup_val не из воздуха берётся.


Уж от кого-кого, но от тебя как-то не ждал...

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
create table dropme_t(id integer);
Table created

create index dropme_t$id on dropme_t(id);
Index created

alter table dropme_t add constraint dropme_t#pk primary key(id) using index dropme_t$id;
Table altered

select INDEX_NAME, INDEX_TYPE, UNIQUENESS
  from user_indexes
 where table_name like 'DROPME_T';
 
INDEX_NAME     INDEX_TYPE UNIQUENESS
-------------- ---------- ----------
DROPME_T$ID    NORMAL     NONUNIQUE

insert into dropme_t values(1);
1 row inserted

insert into dropme_t values(1);
 
insert into dropme_t values(1)
 
ORA-00001: unique constraint (GIS_MRG.DROPME_T#PK) violated
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015782
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Уж от кого-кого, но от тебя как-то не ждал...
Я от тебя тоже: ты утверждаешь, что уникальных индексов не бывает ?
О вреде квантора всеобщности…
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015786
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic
НеофитSQL
Кроме автоматического создания уникального индекса, объявление первичного ключа ещё как-то влияет на таблицу, или это чисто декоративный ярлык для помечания "главной" колонки?
Глубина пропасти твоего невежества чудовищна. Нет смысла бросать туда жемчуга.


Оракл эксперт Том объясняет, что разница в основном в названии.

https://asktom.oracle.com/pls/apex/f?p=100:11:::::P11_QUESTION_ID:4941517587762

Вот и все "жемчуга".
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015787
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доки оракла пишут, что constraint уникальности для PK осуществляется с помощью индекса, которому необязательно быть уникальным. В MsSql вроде так же.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015788
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
разница в основном в названии.
"В огороде бузина, а в Киеве дядько."
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015792
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic
НеофитSQL
разница в основном в названии.
"В огороде бузина, а в Киеве дядько."


Иногда, чтобы задать "очевидный" вопрос, требуется свежий взгляд новичка.

А вот чтобы грамотно ответить, нужны знания эксперта.

Из ответа Тома следует, что любой активный PK можно заменить на уникальный индекс плюс not nullable constraint.

А наоборот - не всегда.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015794
Allbest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic
Allbest
чтобы не было подобных проблем, по идее, не стоит городить дополнительной сущноти - констрэйнта. достаточно создавать индекс
Бред.


Обоснуй
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015796
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
требуется свежий
Твою энергию направить бы на что-нибудь полезное вместо захламления форума самолюбивой пургой…
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015800
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у pl-sql developer всё таки есть глюк.
теперь я попытался сначала удалить индекс на уникальный ключ с помощью GUI - ошибка, не могу говорит удалить индекс такой, так а как тогда? ключ удаляю сначала ошибка, индекс - тоже.
если дропнуть констрейнт скриптом, то всё корректно удалиться - и ключ и индекс.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015802
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic
НеофитSQL
требуется свежий
Твою энергию направить бы на что-нибудь полезное вместо захламления форума самолюбивой пургой…


У меня цель - узнать больше про Оракл от живых людей.

Сегодня я узнал про новую для меня команду pivot, а также про то, что уникальность в ключе можно обеспечить неуникальным индексом. И почитал почему это может быть полезно на практике (deferred, если кому интересно).

От Вас я сегодня ничему не научился, вы почему-то не в настроении для продуктивного общения.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015803
Allbest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
verter,
конкретную ora- то можно узнать?
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015807
Allbest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НеофитSQL

От Вас я сегодня ничему не научился, вы почему-то не в настроении для продуктивного общения.


Для этого персонажа вполне типично
...
Рейтинг: 0 / 0
25 сообщений из 105, страница 1 из 5
Форумы / Oracle [игнор отключен] [закрыт для гостей] / глюк Pl-sql developer'а
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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