Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / глюк Pl-sql developer'а / 25 сообщений из 105, страница 1 из 5
05.11.2020, 12:20
    #40015501
verter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюк Pl-sql developer'а
Использую в своей работе 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
05.11.2020, 12:41
    #40015510
Allbest
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюк Pl-sql developer'а
а)название темы некорректное. Ни о чем не говорит.
б)чудес не быает (по крайней мере, с констрэйнтами). под чудом таки понимаю ошибку вендора субд
в)кроме вью all_ бывают вью dba_, которые не подразумевают ограничения по правам
г)констрэйнты надо искать не по имени, а по столбцам задействованных таблиц
...
Рейтинг: 0 / 0
05.11.2020, 12:45
    #40015515
verter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюк Pl-sql developer'а
Проблема решилась.

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

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

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

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

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

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

.....
stax


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

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


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


Кроме автоматического создания уникального индекса, объявление первичного ключа ещё как-то влияет на таблицу, или это чисто декоративный ярлык для помечания "главной" колонки?
...
Рейтинг: 0 / 0
06.11.2020, 00:27
    #40015779
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюк Pl-sql developer'а
Allbest
чтобы не было подобных проблем, по идее, не стоит городить дополнительной сущноти - констрэйнта. достаточно создавать индекс
Бред.
...
Рейтинг: 0 / 0
06.11.2020, 00:30
    #40015780
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюк Pl-sql developer'а
НеофитSQL
Кроме автоматического создания уникального индекса, объявление первичного ключа ещё как-то влияет на таблицу, или это чисто декоративный ярлык для помечания "главной" колонки?
Глубина пропасти твоего невежества чудовищна. Нет смысла бросать туда жемчуга.
...
Рейтинг: 0 / 0
06.11.2020, 00:30
    #40015781
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюк Pl-sql developer'а
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
06.11.2020, 00:40
    #40015782
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюк Pl-sql developer'а
andrey_anonymous
Уж от кого-кого, но от тебя как-то не ждал...
Я от тебя тоже: ты утверждаешь, что уникальных индексов не бывает ?
О вреде квантора всеобщности…
...
Рейтинг: 0 / 0
06.11.2020, 00:46
    #40015786
НеофитSQL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
глюк Pl-sql developer'а
Elic
НеофитSQL
Кроме автоматического создания уникального индекса, объявление первичного ключа ещё как-то влияет на таблицу, или это чисто декоративный ярлык для помечания "главной" колонки?
Глубина пропасти твоего невежества чудовищна. Нет смысла бросать туда жемчуга.


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

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

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


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

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

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

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


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


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

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

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

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


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


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