powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / глюк Pl-sql developer'а
25 сообщений из 105, страница 4 из 5
глюк 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
25 сообщений из 105, страница 4 из 5
Форумы / Oracle [игнор отключен] [закрыт для гостей] / глюк Pl-sql developer'а
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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