powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / глюк Pl-sql developer'а
105 сообщений из 105, показаны все 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
глюк Pl-sql developer'а
    #40015809
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verter
у pl-sql developer всё таки есть глюк.
Просто ты дитя гуя.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015811
Allbest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elic
verter
у pl-sql developer всё таки есть глюк.
Просто ты дитя гуя.


22210175
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015816
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
andrey_anonymous
Уж от кого-кого, но от тебя как-то не ждал...
Я от тебя тоже: ты утверждаешь, что уникальных индексов не бывает ?

Я утверждаю, что в твоем тезисе относительно технической реализации PK термин "уникальный" - лишний, и должен быть заменен термином "B-Tree".
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015817
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
verter
у pl-sql developer всё таки есть глюк.
теперь я попытался сначала удалить индекс на уникальный ключ с помощью GUI - ошибка, не могу говорит удалить индекс такой, так а как тогда? ключ удаляю сначала ошибка, индекс - тоже.

В окошке редактирования таблицы справа внизу кнопочка смешная есть - " П оказать SQL" называется.
Нажмите ее перед применением изменений и получите ответы на свои вопросы.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015829
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous

В окошке редактирования таблицы справа внизу кнопочка смешная есть - " П оказать SQL" называется.
Нажмите ее перед применением изменений и получите ответы на свои вопросы.


У меня недавно была ситуация, где эта кнопочка в pl/sql developer показала ложный DDL (плохой синтакс).
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015848
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
показала ложный DDL

Про ложные опята слышал, а ложный DDL - это как? Вместо create table возвращает drop database?

Прежде чем обвинять средство в ошибках, стоит посмотреть какие стоят настройки генерации DDL и подумать, хватает ли прав на их использование.

з.ы. разумеется тулзы порой косячат, но чаще косячат их пользователи
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015916
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
verter
у pl-sql developer всё таки есть глюк.
теперь я попытался сначала удалить индекс на уникальный ключ с помощью GUI - ошибка, не могу говорит удалить индекс такой, так а как тогда? ключ удаляю сначала ошибка, индекс - тоже.

В окошке редактирования таблицы справа внизу кнопочка смешная есть - " П оказать SQL" называется.
Нажмите ее перед применением изменений и получите ответы на свои вопросы.


Ну как бы я знаю как получить скрипт в pl-sql developer’е :)

Дело то не в этом, просто заметил глюк гуи и сразу не разобрался, написал сюда, сейчас уже всё абсолютно ясно.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015922
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ложные опята для неофитов.

Как и в тексте можно что-то недописать, так и в гуях.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015939
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
PK можно заменить на уникальный индекс плюс not nullable constraint.

ЧЯДНТ?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create table dropme_t(pk integer primary key, uniq_idx integer not null);
Table created

create unique index dropme_t$uniq_idx on dropme_t(uniq_idx);
Index created

create table dropme_ch1_t(fk integer references dropme_t(pk));
Table created

create table dropme_ch2_t(fk_uniq integer references dropme_t(uniq_idx));
 
create table dropme_ch2_t(fk_uniq integer references dropme_t(uniq_idx))
 
ORA-02270: no matching unique or primary key for this column-list
---WTF?! Юниор же сказал - можно!
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015958
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это все-таки скорее не к Неофиту, а к тому кренделю, который считает, что индекса достаточно, а ограничение (констрейнт по буржуински) поднимать не обязательно
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015966
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
НеофитSQL
показала ложный DDL

Про ложные опята слышал, а ложный DDL - это как? Вместо create table возвращает drop database?

Прежде чем обвинять средство в ошибках, стоит посмотреть какие стоят настройки генерации DDL и подумать, хватает ли прав на их использование.

з.ы. разумеется тулзы порой косячат, но чаще косячат их пользователи


В этом случае накосячил тул - показал sql который не парсится ораклом.

22204472
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015972
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL


В этом случае накосячил тул



Как только напишете тул, который учитывает все варианты, которые может ввести прокладка между монитором и стулом - приходите, поговорим про косяки.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015975
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
В этом случае накосячил тул

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

А версия тула достаточно свежая, чтобы адекватно понимать виртуальные колонки?


Полагаю что да, т.к. виртуальные колонки были в нем созданы.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015979
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm
НеофитSQL


В этом случае накосячил тул



Как только напишете тул, который учитывает все варианты, которые может ввести прокладка между монитором и стулом - приходите, поговорим про косяки.


Легко: echo.exe

Не уверен, что вы хотели сказать.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015983
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

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

Попробовал на версии 13.0.6 - проблем с генерацией не наблюдается.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015984
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

Легко: echo.exe

А где такой можно скачать?
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015985
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Легко: echo.exe


Код: plsql
1.
2.
3.
4.
> echo.exe "


> 



И где моя кавычка?
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015986
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
Microsoft Windows [Version 10.0.16299.2166]
(c) Корпорация Майкрософт (Microsoft Corporation), 2017. Все права защищены.

C:\Users\kudryavtsev_le\IdeaProjects\Excel\lib>echo .exe  aaaa
 exe  aaaa

C:\Users\kudryavtsev_le\IdeaProjects\Excel\lib>echo.exe "
exe "

у меня с кавычками все нормально /Windows 7/
Не стабильный тулз какой-то, да и с ".exe" проблемка
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015987
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Так у вас небось встроенный виндовый

Код: plaintext
1.
2.
3.
4.
5.
6.
> echo.exe --version
echo (GNU coreutils) 8.26
Packaged by Cygwin (8.26-2)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later < http://gnu.org/licenses/gpl.html>. 
This is free software: you are free to change and redistribute it.

С виндовым можно ещё повозмущаться на конструкции вида
Код: plaintext
1.
2.
3.
4.
> echo <<11111

> echo >>a:\\log.log

Эха не происходит
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015990
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
НеофитSQL
PK можно заменить на уникальный индекс плюс not nullable constraint.

ЧЯДНТ?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create table dropme_t(pk integer primary key, uniq_idx integer not null);
Table created

create unique index dropme_t$uniq_idx on dropme_t(uniq_idx);
Index created

create table dropme_ch1_t(fk integer references dropme_t(pk));
Table created

create table dropme_ch2_t(fk_uniq integer references dropme_t(uniq_idx));
 
create table dropme_ch2_t(fk_uniq integer references dropme_t(uniq_idx))
 
ORA-02270: no matching unique or primary key for this column-list
---WTF?! Юниор же сказал - можно!



Юниор учится :)

Я вижу из этого примера, что unique index (+ non-nullable) может заменить constraints PK/UK внутри таблицы, но не способен заменить constraints между таблицами.

Теперь я могу ответить на свой вопрос более полно:
> Кроме автоматического создания уникального индекса, объявление первичного ключа ещё как-то влияет на таблицу,
> или это чисто декоративный ярлык для помечания "главной" колонки?

1) объявление первичного ключа не обязательно создает уникальный индекс. В зависимости от опций, он может создать неуникальный индекс, а также может использовать уже существующий индекс.
2) вне зависимости от типа индекса, первичный ключ использует его для обеспечения уникальности значений в колонке/колонках ключа, также запретит null
3) отличия первичного ключа и уникального ключа: первичный ключ не позволяет nulls, уникальный разрешает пустышки (если колонку/колонки ключа объявить not nullable, это различие пропадает). Второе - индексы для поддержки первичного ключа обычно создаются кластерного типа. Что такое кластерный тип индекса, я еще не читал. Наверное, что-то связанное со скоростью.

Выводы:
- если на таблицу нет ссылок, первичный/уникальные ключи можно заменить на индексы
- если на таблицу есть ссылки, ключи необходимы для обеспечения ссылок
- первичный ключ можно заменить уникальным, но это может снизить скорость.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015993
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev
НеофитSQL

Легко: echo.exe

А где такой можно скачать?


Давайте я вам лучше исходник дам, скачивать ехешники стремно (для меня, по крайней мере).
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015994
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
индексы для поддержки первичного ключа обычно создаются кластерного типа


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

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

Попробовал на версии 13.0.6 - проблем с генерацией не наблюдается.


В теме которую я привел, ситуация была следующая:

- создал таблицу в GUI, нажал Apply - все создалось
- Нажал "Show SQL" - показало DDL, правдоподобный но непригодный для Оракла
- посмотрел через dbms_ddl - показало правильный DDL.

Похоже на ошибку тулза, который не может из Оракла вытащить и показать правильный DDL, а берет его непонятно откуда.

Ошибкой в целом является поведение первых двух шагов. Третий шаг намекает что Оракл 11.2 скорее всего не виноват.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40015999
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

Поэтому и спрашиваю про версию. Полноценная поддержка новых фич СУБД в таких тулзах не всегда успевает за их появлением.
В относительно свежей версии pl/sql developer повторить кейс не получилось, рекомендую обновиться. (он же у вас честно купленный, правда?)
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016002
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
env
НеофитSQL,

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

Попробовал на версии 13.0.6 - проблем с генерацией не наблюдается.


В теме которую я привел, ситуация была следующая:

- создал таблицу в GUI, нажал Apply - все создалось
- Нажал "Show SQL" - показало DDL, правдоподобный но непригодный для Оракла
- посмотрел через dbms_ddl - показало правильный DDL.

Похоже на ошибку тулза, который не может из Оракла вытащить и показать правильный DDL, а берет его непонятно откуда.

Ошибкой в целом является поведение первых двух шагов. Третий шаг намекает что Оракл 11.2 скорее всего не виноват.


В GUI PL-SQL Developer'а есть такая особенность:
Если выбираешь Показать структуру таблицы и потом нажимаешь Посмотреть SQL, то всё красиво, а если выбираешь Редактировать структуру таблицы и потом Просмотр SQL, то видишь чушь.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016003
verter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
версия девелопера 10.0.3.1701
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016004
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
НеофитSQL
индексы для поддержки первичного ключа обычно создаются кластерного типа


Ссылку на доку дайте, где это написано. В sql reference про это ни слова, может упустил чего?


Посмотрите здесь: https://asktom.oracle.com/pls/apex/asktom.search?tag=clustered-index-and-primary-keys

Там со второй попытки эксперт Том объясняет что это что-то связанное с кластерами, я не вникал.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016007
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env
Leonid Kudryavtsev,

Так у вас небось встроенный виндовый

Код: plaintext
1.
2.
3.
4.
5.
6.
> echo.exe --version
echo (GNU coreutils) 8.26
Packaged by Cygwin (8.26-2)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later < http://gnu.org/licenses/gpl.html>. 
This is free software: you are free to change and redistribute it.

С виндовым можно ещё повозмущаться на конструкции вида
Код: plaintext
1.
2.
3.
4.
> echo <<11111

> echo >>a:\\log.log

Эха не происходит


Напомнило анекдот: https://4tob.ru/anekdots/2457
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016008
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
verter

В GUI PL-SQL Developer'а есть такая особенность:
Если выбираешь Показать структуру таблицы и потом нажимаешь Посмотреть SQL, то всё красиво, а если выбираешь Редактировать структуру таблицы и потом Просмотр SQL, то видишь чушь.


Очень дельное замечание.
Учту, а то как-то некомфортно было жать на "Show SQL" и гадать, правда там или нет.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016010
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

Смешались в кучу кони, люди и залпы тысячи орудий....

Нет, это совсем про другое и никакого отношения к обычным первичным ключам на heap-organized таблицах не имеет.

Рекомендация создавать первичный ключ кластерным индексом действительно есть. В ms sql server. И там кластерный индекс это совершенно другое понятие, прямо связанное с организацией хранения данных.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016032
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

Я вижу из этого примера, что unique index (+ non-nullable) может заменить constraints PK/UK внутри таблицы, но не способен заменить constraints между таблицами.

Тут уместно задать вопрос: а что такое вообще constraint и чем он отличается от индекса/триггера/еще какой-нибудь лабудени?
Что такое первичный ключ, для зачем придуман?
Сумеете разобраться - посмеетесь со своих сентенций.

НеофитSQL

1) объявление первичного ключа не обязательно создает уникальный индекс. В зависимости от опций, он может создать неуникальный индекс, а также может использовать уже существующий индекс.

Также возможно использование индекса, не совпадающего со множеством атрибутов первичного/уникального ключа. Условия такого использования найдете самостоятельно.
Это свойство удобно использовать при наличии подходящего поискового индекса, чтобы не плодить лишний индекс для PK/UK.

НеофитSQL

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

Точно?
Bitmap, FBI, доменный индекс... - любой использует?

НеофитSQL

индексы для поддержки первичного ключа обычно создаются кластерного типа. Что такое кластерный тип индекса, я еще не читал. Наверное, что-то связанное со скоростью.

Не стоит выдавать "нагора" великие знания, в которых Вы еще не разобрались.
Почитаете - расскажете про "кластерный тип", я еще раз посмеюсь :)

НеофитSQL

- если на таблицу нет ссылок, первичный/уникальные ключи можно заменить на индексы

Отсылаю к первому комментарию.
PK - это Constraint, а не индекс.
Не следует одно заменять другим.

НеофитSQL

- первичный ключ можно заменить уникальным, но это может снизить скорость.

Шо? Опять?!
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016034
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env
Рекомендация создавать первичный ключ кластерным индексом действительно есть. В ms sql server.

Именно.
В Oracle такого понятия нет.
Ближайший аналог - Index-organized table.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016056
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
НеофитSQL

Я вижу из этого примера, что unique index (+ non-nullable) может заменить constraints PK/UK внутри таблицы, но не способен заменить constraints между таблицами.

Тут уместно задать вопрос: а что такое вообще constraint и чем он отличается от индекса/триггера/еще какой-нибудь лабудени?
Что такое первичный ключ, для зачем придуман?
Сумеете разобраться - посмеетесь со своих сентенций.


>Что такое первичный ключ, для зачем придуман?

Это вопрос, который я изначально задал. Никто просто и внятно пока не ответил, хотя несколько участников намекнули что знают.
Книжное определение следующее: это тот ключ, который используется для однозначного определения строки таблицы.
На вопрос как быть с таблицами, где однозначное определение возможно без первичного ключа, книга не отвечает.
Из того что я знаю на сегодня, первичный ключ мало чем (nullable) отличается от уникального ключа, и служит для помечания "главного ключа" таблицы для программистов и для моделей. Декоративная такая табличка.

andrey_anonymous

НеофитSQL

1) объявление первичного ключа не обязательно создает уникальный индекс. В зависимости от опций, он может создать неуникальный индекс, а также может использовать уже существующий индекс.

Также возможно использование индекса, не совпадающего со множеством атрибутов первичного/уникального ключа. Условия такого использования найдете самостоятельно.
Это свойство удобно использовать при наличии подходящего поискового индекса, чтобы не плодить лишний индекс для PK/UK.


Это возможно важное дополнение, но я пока не могу прочувствовать его полезность - нет опыта.

andrey_anonymous

НеофитSQL

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

Точно?
Bitmap, FBI, доменный индекс... - любой использует?


Индекса, совместимого с ключом. Я знаю что ключ в Оракле требует присутствия или уникального, или "нормального" индекса.
Надеюсь, это было понятно из контекста.

andrey_anonymous

НеофитSQL

индексы для поддержки первичного ключа обычно создаются кластерного типа. Что такое кластерный тип индекса, я еще не читал. Наверное, что-то связанное со скоростью.

Не стоит выдавать "нагора" великие знания , в которых Вы еще не разобрались.
Почитаете - расскажете про "кластерный тип", я еще раз посмеюсь :)


без комментария.

andrey_anonymous

НеофитSQL

- если на таблицу нет ссылок, первичный/уникальные ключи можно заменить на индексы

Отсылаю к первому комментарию.
PK - это Constraint, а не индекс.
Не следует одно заменять другим.


Constraints бывают разные. Ограничение уникальности может быть представлено как PK, или как уникальный индекс.

andrey_anonymous

НеофитSQL

- первичный ключ можно заменить уникальным, но это может снизить скорость.

Шо? Опять?!


Щас спою! :)

нет, ранее я рассуждал что первичный ключ можно заменить уникальным индексом .
Вы привели пример, который это опроверг: использование внешних ключей требует ключ в родительской таблице.
Этот ключ может быть первичным, или этот ключ может быть уникальным.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016096
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НеофитSQL,

constraint и index, назначение их в чем?

PS: как же тяжело твоим коллегам с таким тугим интерном ...
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016103
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
graycode
НеофитSQL,

constraint и index, назначение их в чем?

PS: как же тяжело твоим коллегам с таким тугим интерном ...


Я этот вопрос как раз и задал.

Если знаете, скажите. Только не из учебника, а подумав.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016131
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
НеофитSQL,

Так прочитай определения из учебника, а если ты не в состоянии понять самые самые простые вещи, ты ошибся специальностью.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016439
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode

constraint и index, назначение их в чем?

PS: как же тяжело твоим коллегам с таким тугим интерном ...


есть констраинт или нет?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SQL> drop table test;

Table dropped.

SQL> create table test(id int,n varchar2(10));

Table created.

SQL> create unique index i$test$id on test(id);

Index created.

SQL> ed
Wrote file afiedt.buf

  1* select * from dba_constraints where table_name='TEST'
SQL> /

no rows selected

SQL>



.....
stax
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016445
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
есть констраинт или нет?
А сам как думаешь? И к чему спрашиваешь?
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016498
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax
есть констраинт или нет?

Ты объявлял constraint?

PS: у тебя даже индекс стрёмный))
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016502
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
Stax
есть констраинт или нет?

Ты объявлял constraint?

PS: у тебя даже индекс стрёмный))


так есть констраинт или нет?

что не так с индексом?

ps
лично мне всеравно, просто интересно

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

Твой вариант ответа?

Stax
что не так с индексом?

Дублирующиеся строки сам в табличку вставишь или помощь требуется?))
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016507
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
Stax
так есть констраинт или нет?

Твой вариант ответа?


у меня нет ответа

и да/и нет, парадокс (такой себе котяра, фича)

зы
аж счас заметил
НеофитSQL за что забанили?

.....
stax
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016514
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax
у меня нет ответа

и да/и нет, парадокс (такой себе котяра, фича)

Не объявлял, значит с точки зрения СУБД его нет.

Stax
НеофитSQL за что забанили?

Не знаю, я не модератор, но подозреваю что за советы из серии очумелые ручки.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016517
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode

Не объявлял, значит с точки зрения СУБД его нет.


Код: plsql
1.
2.
3.
4.
5.
SQL> /
insert into test values(1,1)
*
ERROR at line 1:
ORA-00001: unique constraint (STAX.I$TEST$ID) violated 



СУБД говорит violated constraint (нарушен констраинт )

парадокс

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

Код: plsql
1.
insert into test values(null,'1')


действительно попадокс))

22227509
попадокс продолжается ...
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016520
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
СУБД говорит

А документация отвечает.

When you specify a unique constraint on one or more columns, Oracle implicitly creates an index on the unique key. If you are defining uniqueness for purposes of query performance, then Oracle recommends that you instead create the unique index explicitly using a CREATE UNIQUE INDEX statement. You can also use the CREATE UNIQUE INDEX statement to create a unique function-based index that defines a conditional unique constraint. .

упд. Независимо от того function-based или normal индекс определяет явный unique, будет создан одноимённый constraint, если его нет. Уточнение про fbi здесь из-за предшествующего контекста о задании ограничения unique при создании таблицы.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016529
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

так есть констраинт у таблички test, или нет?

....
stax
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016534
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env
Независимо от того function-based или normal индекс определяет явный unique, будет создан одноимённый constraint , если его нет.

Хороша трава однако...
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
create table dropme_t(uniq_idx integer not null);
Table created

create unique index dropme_t$uniq_idx on dropme_t(uniq_idx);
Index created

select index_name, index_type, uniqueness from user_indexes where table_name like 'DROPME_T';
 
INDEX_NAME           INDEX_TYPE       UNIQUENESS
-------------------- ---------------- ----------
DROPME_T$UNIQ_IDX    NORMAL           UNIQUE

select constraint_name, constraint_type, search_condition_vc
  from user_constraints c
 where table_name like 'DROPME_T'
  ;
 
CONSTRAINT_NAME      CONSTRAINT_TYPE  SEARCH_CONDITION_VC
-------------------- ---------------- ----------------------
SYS_C0076508         C                "UNIQ_IDX" IS NOT NULL
 
SQL> 
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016535
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
так есть констраинт у таблички test, или нет?

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

Если верить доке, то именно для unique index - есть. ничего не помешает создать одноимённый unique constraint поверх другого индекса.

упд.

andrey_anonymous,

Да, погорячился. Надо было проверить.

упд2.

Тогда получается ошибка в сообщении об ошибке
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016543
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Stax
так есть констраинт у таблички test, или нет?

Нет.


а оракля говорит что нарушен констраинт которого нет


ORA-00001: unique constraint (STAX.I$TEST$ID) violated


.....
stax
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016546
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
а оракля говорит что нарушен констраинт которого нет

Наябедничал :)
А вот в PL/SQL оно ловится на DUP_VAL_ON_INDEX даже на неуникальном индексе, и что?
В данном случае oracle швыряется ORA-00001 и от индекса, и от констрейнта.

...для эстетов: можно поправить базу сообщений и пусть с днем варенья поздравляет.
Хинт: текст сообщения лежит на клиенте, выводится по коду -1 от facility ORA.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016559
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Stax
а оракля говорит что нарушен констраинт которого нет

Наябедничал :)
А вот в PL/SQL оно ловится на DUP_VAL_ON_INDEX даже на неуникальном индексе, и что?
В данном случае oracle швыряется ORA-00001 и от индекса, и от констрейнта.

...для эстетов: можно поправить базу сообщений и пусть с днем варенья поздравляет.
Хинт: текст сообщения лежит на клиенте, выводится по коду -1 от facility ORA.


раз
1* select * from dba_constraints where table_name='TEST'
SQL> /
no rows selected

то констраинта нет, но сообщение о констраинте

если поменять текст, то он поменяется и в случае нарушения существующего констраинта

и не только на клиенте
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
SQL> declare
  2   v_err varchar2(32000);
  3  begin
  4   insert into test values(1,1);
  5   insert into test values(1,1);
  6  exception when others then
  7   v_err:=sqlerrm;
  8   dbms_output.put_line(v_err);
  9  end;
 10  /
ORA-00001: unique constraint (STAX.I$TEST$ID) violated

PL/SQL procedure successfully completed.

SQL>




ps
фк хочет именно констраинта (почему-то индекса ему мало)

.....
stax
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016570
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
фк хочет именно констраинта (почему-то индекса ему мало)

Вооот, это уже ближе к теме... :)
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016579
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Хинт: текст сообщения лежит на клиенте
Во-первых, клиент не всегда имеет место быть.
Во-вторых, текст сообщения передаётся с сервера. Клиентский файл не играет.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016587
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic
andrey_anonymous
Хинт: текст сообщения лежит на клиенте
Во-первых, клиент не всегда имеет место быть.
Во-вторых, текст сообщения передаётся с сервера. Клиентский файл не играет.

1. Клиент есть всегда. Сервер тоже временами клиент.
2. Был неправ, клиентский msb для серверных сообщений не играет.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016595
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
Elicклиент не всегда имеет место быть.
1. Клиент есть всегда. Приложения могут подключаться к серверу не используя клиента Oracle.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016612
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax
фк хочет именно констраинта (почему-то индекса ему мало)

Потому что фк относится к миру ограничений целостности, а индекс относится к миру поисковых механизмов, то что технически уникальный индекс накладывает определенные ограничения и частично покрывает функции ограничения уникального ключа, никак не переводит индекс в разряд ограничений целостности.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016742
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
Stax
фк хочет именно констраинта (почему-то индекса ему мало)

Потому что фк относится к миру ограничений целостности, а индекс относится к миру поисковых механизмов, то что технически уникальный индекс накладывает определенные ограничения и частично покрывает функции ограничения уникального ключа, никак не переводит индекс в разряд ограничений целостности.


ето все понятно (у меня притензий к ФК нет, даж мож и добре что требует констраинта)

повторно
но ORA-00001: говорит о констраинте, которого как бы нет

.....
stax
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016744
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
повторно
но ORA-00001: говорит о констраинте, которого как бы нет
И что из этого?
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016745
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

Одно сообщение на нарушение уникальности, не стали делать переменную для подстановки index/constraint.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016776
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax,

Ты можешь создать триггер и проверять в нем какие то сложные ограничения бизнес-логики, в случае нарушения кидать исключение, триггер это constraint?
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016777
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode
Stax,

Ты можешь создать триггер и проверять в нем какие то сложные ограничения бизнес-логики, в случае нарушения кидать исключение, триггер это constraint?


триггер не констраинт

ps
не знаю как в триггере обеспечить уникальность не блокируя ресурс (аля монопольный режим)

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

Одно сообщение на нарушение уникальности, не стали делать переменную для подстановки index/constraint.


так я ж очем

не стали и фиг с ними, фича

кстати, если есть констраинт, то сорится именно на него (не на индекс)

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

Ты можешь создать триггер и проверять в нем какие то сложные ограничения бизнес-логики, в случае нарушения кидать исключение, триггер это constraint?

Нет.
Constraint - это декларативное объявление.
Отсутствующий до сих пор Assert - это constraint, а триггер - нет.
Триггер - это код, реализуемый с помощью sql procedural extension, в рамках той или иной событийной модели.
Это солома которую предлагается использовать в условиях невозможности или сознательного отказа
от реализации логических бизцес-правил декларативным путем.
Конопли не дадим, но вот тебе пенька, делай с ней что хош.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40016826
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax
триггер не констраинт

ps
не знаю как в триггере обеспечить уникальность не блокируя ресурс (аля монопольный режим)

.....
stax

Прогресс есть, но мухи все еще перемешаны с котлетами, осталось отделить ограничения целостности и конкретную их реализацию, поскольку это совершенно разные понятия. Уникальность записи это ограничение целостности, а как именно ты будешь его добиваться, это уже реализация и индекс используется именно в качестве реализации.

Когда ты создаешь уникальный индекс, то Oracle вполне вправе предположить, что ты реализуешь какое то свое кастомное ограничение уникальности и генерировать соответствующую ошибку.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40017405
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax
env,

так есть констраинт у таблички test, или нет?

....
stax


Как сказал Билл Клинтон, "зависит от определения слова constraint".

Я бы сказал что уникальный индекс накладывает на колонку/+и constraint. То, что он активен, но не показывается ожидаемой командой оракла, скорее недосмотр который со временем могут исправить.

Если WiFi не показывается в списке, или \\win\share$ не показан в эксплорере, это не значит что их нет.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40017406
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточнение: я предположил что индекс невозможно обмануть.

По поводу исполнения constraint в триггере; опытные товарищи отметились что в триггере такое сделать невозможно, не блокируя ресурс.

Почему это так?
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40017429
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL

Уточнение: я предположил что индекс невозможно обмануть.

По поводу исполнения constraint в триггере; опытные товарищи отметились что в триггере такое сделать невозможно, не блокируя ресурс.

Почему это так?


попробуйте реализовать в триггере (мож у Вас со свежим взглядом невозможное станет возможным)

ps
обман обману рознь (игноре ров он .... )

.....
stax
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40017676
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax
НеофитSQL

Уточнение: я предположил что индекс невозможно обмануть.

По поводу исполнения constraint в триггере; опытные товарищи отметились что в триггере такое сделать невозможно, не блокируя ресурс.

Почему это так?


попробуйте реализовать в триггере (мож у Вас со свежим взглядом невозможное станет возможным)

ps
обман обману рознь (игноре ров он .... )

.....
stax


Я сделал constraint на колонку id в триггере таблицы test23 таким образом. Для примера - только для вставки.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
create or replace trigger tr_test23
  before insert on test23  
  for each row
begin
  insert into test22 (id)
  values (:new.uq);
end tr_test23;



Вроде работает.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
SQL> insert into test23 (uq) values(2);
1 row inserted

SQL> insert into test23 (uq) values(2);
insert into test23 (uq) values(2)
ORA-00001: unique constraint (WHOISYOURDADDY.PK__TEST22) violated
ORA-06512: at "WHOISYOURDADDY.TR_TEST23", line 4
ORA-04088: error during execution of trigger 'WHOISYOURDADDY.TR_TEST23'
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40017804
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL,

Использование юника на соседней таблице в триггере для текущей в контексте этой темы это что-то вроде:
интернеты- Я прекрасно понимаю семантику вопроса, но полностью игнорирую его суть.
- Вы могли бы привести пример?
- Мог бы.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40018049
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

Механика логики триггера в этом вопросе не является принципиальной,
меня интересовало мнение Stax (и других), почему constraint уникальности невозможно реализовать в триггере, хотя другие (построчные) вполне можно.

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


важно

.....
stax
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40018066
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
Я мог бы триггер написать и без использования constraint других таблиц, если это важно.

Важно. Сделайте реализацию ограничения уникальности на одной таблице триггером для этой таблицы, без использования unique index/constraint на любой таблице.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40018081
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax
НеофитSQL
если это важно.


важно

.....
stax


Сегодня попробую.
Т.е. речь шла о трудности реализации уникальности значений в таблице не полагаясь на существующие механизмы для этой цели.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40018097
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
dmdmdm
пропущено...


Как только напишете тул, который учитывает все варианты, которые может ввести прокладка между монитором и стулом - приходите, поговорим про косяки.


Легко: echo.exe

Не уверен, что вы хотели сказать.


1. Т.е. echo.exe равнозначно plsqldev.exe. Принято.

2. "Не понимаете" - читай, "изображаете непонимание", когда то, что сказали, неудобно вам.

3. С первого вашего появления на форуме и далее неизменно, конструктивную критику вы игнорируете, а свое эго - в том числе и в областях, малознакомых вам, выпячиваете. Правильным путем идете, товарищ.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40018099
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm

1. Т.е. echo.exe равнозначно plsqldev.exe. Принято.

2. "Не понимаете" - читай, "изображаете непонимание", когда то, что сказали, неудобно вам.

3. С первого вашего появления на форуме и далее неизменно, конструктивную критику вы игнорируете, а свое эго - в том числе и в областях, малознакомых вам, выпячиваете. Правильным путем идете, товарищ.


Это называется "передвигать ворота". Работает с гуманитариями, реже - с программистами.
Сформулируйте свою мысль более конкретно, получите более полезный ответ.
...
Рейтинг: 0 / 0
глюк Pl-sql developer'а
    #40018100
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
получите более полезный ответ.


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


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