Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
 глюк Pl-sql developer'а  [new]
verter
Member

Откуда: Санкт-Петербург
Сообщений: 1018
Использую в своей работе 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';

ключа нет.

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

Как можно гарантированно очистить базу от этого ключа?
5 ноя 20, 12:20    [22226784]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Allbest
Member

Откуда:
Сообщений: 143
а)название темы некорректное. Ни о чем не говорит.
б)чудес не быает (по крайней мере, с констрэйнтами). под чудом таки понимаю ошибку вендора субд
в)кроме вью all_ бывают вью dba_, которые не подразумевают ограничения по правам
г)констрэйнты надо искать не по имени, а по столбцам задействованных таблиц
5 ноя 20, 12:41    [22226806]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
verter
Member

Откуда: Санкт-Петербург
Сообщений: 1018
Проблема решилась.

Когда создаётся уникальный ключ, т.е. уникальный констраент, то автоматом создаётся ещё и индекс.
В Pl-SQL developer'е нужно сначала удалить этот индекс, а потом только ключ, иначе ключ удалится, а индекс останется и констрейнт будет продолжать работать.
Я ошибся, когда смотришь определение таблицы, то в скрипте на самом деле было видно определение индекса, а не констрейнта.
5 ноя 20, 12:45    [22226813]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2798
verter,
upper не пробовали?

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

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

.....
stax
5 ноя 20, 12:49    [22226815]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
verter
Member

Откуда: Санкт-Петербург
Сообщений: 1018
Stax
verter,
upper не пробовали?

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

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

.....
stax


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

ну а с индексами нужно же было сначала догадаться.
5 ноя 20, 12:51    [22226817]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Elic
Member

Откуда:
Сообщений: 29991
verter
ключа нет.
Но он есть и действует, потому что когда я пытаюсь вставить в таблицу что то удовлетворяющее его ограничением, то оракл выдаёт мне ошибку что сработал уникальный ключ
Ограничение уникальности технически реализуется посредством уникального индекса.
Такой индекс либо создаётся автоматически при создании ограничения, либо существует заранее.
Во втором случае уникальный индекс не удаляется автоматически при удалении ограничения уникальности. Типичный сценарий второго случая - импорт.
verter
Как можно гарантированно очистить базу от этого ключа?
Всегда указывать drop index. RTFM drop_constraint_clause
5 ноя 20, 12:51    [22226818]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
verter
Member

Откуда: Санкт-Петербург
Сообщений: 1018
Elic
verter
ключа нет.
Но он есть и действует, потому что когда я пытаюсь вставить в таблицу что то удовлетворяющее его ограничением, то оракл выдаёт мне ошибку что сработал уникальный ключ
Ограничение уникальности технически реализуется посредством уникального индекса.
Такой индекс либо создаётся автоматически при создании ограничения, либо существует заранее.
Во втором случае уникальный индекс не удаляется автоматически при удалении ограничения уникальности. Типичный сценарий второго случая - импорт.
verter
Как можно гарантированно очистить базу от этого ключа?
Всегда указывать drop index. RTFM drop_constraint_clause


Спасибо. Именно так и вышло.
5 ноя 20, 12:52    [22226819]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
Elic
Ограничение уникальности технически реализуется посредством уникального индекса.
5 ноя 20, 15:57    [22226970]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Elic
Member

Откуда:
Сообщений: 29991
andrey_anonymous
Elic
Ограничение уникальности технически реализуется посредством уникального индекса.
Напрасно нагнетаешь глубину "техничности". dup_val не из воздуха берётся.
5 ноя 20, 22:48    [22227223]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Allbest
Member

Откуда:
Сообщений: 143
чтобы не было подобных проблем, по идее, не стоит городить дополнительной сущноти - констрэйнта. достаточно создавать индекс

Сообщение было отредактировано: 5 ноя 20, 23:21
5 ноя 20, 23:20    [22227233]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
НеофитSQL
Member

Откуда: Маями
Сообщений: 760
Elic,


Кроме автоматического создания уникального индекса, объявление первичного ключа ещё как-то влияет на таблицу, или это чисто декоративный ярлык для помечания "главной" колонки?
6 ноя 20, 00:06    [22227251]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Elic
Member

Откуда:
Сообщений: 29991
Allbest
чтобы не было подобных проблем, по идее, не стоит городить дополнительной сущноти - констрэйнта. достаточно создавать индекс
Бред.
6 ноя 20, 00:27    [22227260]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Elic
Member

Откуда:
Сообщений: 29991
НеофитSQL
Кроме автоматического создания уникального индекса, объявление первичного ключа ещё как-то влияет на таблицу, или это чисто декоративный ярлык для помечания "главной" колонки?
Глубина пропасти твоего невежества чудовищна. Нет смысла бросать туда жемчуга.
6 ноя 20, 00:30    [22227262]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
Elic
andrey_anonymous
пропущено...
Напрасно нагнетаешь глубину "техничности". dup_val не из воздуха берётся.


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

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
6 ноя 20, 00:30    [22227263]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Elic
Member

Откуда:
Сообщений: 29991
andrey_anonymous
Уж от кого-кого, но от тебя как-то не ждал...
Я от тебя тоже: ты утверждаешь, что уникальных индексов не бывает?
О вреде квантора всеобщности…
6 ноя 20, 00:40    [22227264]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
НеофитSQL
Member

Откуда: Маями
Сообщений: 760
Elic
НеофитSQL
Кроме автоматического создания уникального индекса, объявление первичного ключа ещё как-то влияет на таблицу, или это чисто декоративный ярлык для помечания "главной" колонки?
Глубина пропасти твоего невежества чудовищна. Нет смысла бросать туда жемчуга.


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

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

Вот и все "жемчуга".
6 ноя 20, 00:46    [22227269]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
НеофитSQL
Member

Откуда: Маями
Сообщений: 760
Доки оракла пишут, что constraint уникальности для PK осуществляется с помощью индекса, которому необязательно быть уникальным. В MsSql вроде так же.
6 ноя 20, 00:52    [22227271]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Elic
Member

Откуда:
Сообщений: 29991
НеофитSQL
разница в основном в названии.
"В огороде бузина, а в Киеве дядько."
6 ноя 20, 00:53    [22227272]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
НеофитSQL
Member

Откуда: Маями
Сообщений: 760
Elic
НеофитSQL
разница в основном в названии.
"В огороде бузина, а в Киеве дядько."


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

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

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

А наоборот - не всегда.
6 ноя 20, 01:01    [22227282]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Allbest
Member

Откуда:
Сообщений: 143
Elic
Allbest
чтобы не было подобных проблем, по идее, не стоит городить дополнительной сущноти - констрэйнта. достаточно создавать индекс
Бред.


Обоснуй
6 ноя 20, 01:05    [22227284]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Elic
Member

Откуда:
Сообщений: 29991
НеофитSQL
требуется свежий
Твою энергию направить бы на что-нибудь полезное вместо захламления форума самолюбивой пургой…
6 ноя 20, 01:11    [22227286]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
verter
Member

Откуда: Санкт-Петербург
Сообщений: 1018
у pl-sql developer всё таки есть глюк.
теперь я попытался сначала удалить индекс на уникальный ключ с помощью GUI - ошибка, не могу говорит удалить индекс такой, так а как тогда? ключ удаляю сначала ошибка, индекс - тоже.
если дропнуть констрейнт скриптом, то всё корректно удалиться - и ключ и индекс.
6 ноя 20, 01:19    [22227290]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
НеофитSQL
Member

Откуда: Маями
Сообщений: 760
Elic
НеофитSQL
требуется свежий
Твою энергию направить бы на что-нибудь полезное вместо захламления форума самолюбивой пургой…


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

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

От Вас я сегодня ничему не научился, вы почему-то не в настроении для продуктивного общения.
6 ноя 20, 01:28    [22227292]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Allbest
Member

Откуда:
Сообщений: 143
verter,
конкретную ora- то можно узнать?
6 ноя 20, 01:28    [22227293]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Allbest
Member

Откуда:
Сообщений: 143
НеофитSQL

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


Для этого персонажа вполне типично
6 ноя 20, 01:36    [22227297]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5   вперед  Ctrl      все
Все форумы / Oracle Ответить