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

Откуда: Россия, Москва
Сообщений: 6749
Stax,

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

упд.

andrey_anonymous,

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

упд2.

Тогда получается ошибка в сообщении об ошибке

Сообщение было отредактировано: 9 ноя 20, 15:39
9 ноя 20, 15:40    [22228823]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2798
andrey_anonymous
Stax
так есть констраинт у таблички test, или нет?

Нет.


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


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


.....
stax
9 ноя 20, 15:43    [22228827]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
Stax
а оракля говорит что нарушен констраинт которого нет

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

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

Сообщение было отредактировано: 9 ноя 20, 15:46
9 ноя 20, 15:50    [22228832]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2798
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

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

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

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

Откуда: Москва
Сообщений: 18398
Stax
фк хочет именно констраинта (почему-то индекса ему мало)

Вооот, это уже ближе к теме... :)
9 ноя 20, 16:31    [22228861]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Elic
Member

Откуда:
Сообщений: 29991
andrey_anonymous
Хинт: текст сообщения лежит на клиенте
Во-первых, клиент не всегда имеет место быть.
Во-вторых, текст сообщения передаётся с сервера. Клиентский файл не играет.
9 ноя 20, 16:47    [22228878]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
Elic
andrey_anonymous
Хинт: текст сообщения лежит на клиенте
Во-первых, клиент не всегда имеет место быть.
Во-вторых, текст сообщения передаётся с сервера. Клиентский файл не играет.

1. Клиент есть всегда. Сервер тоже временами клиент.
2. Был неправ, клиентский msb для серверных сообщений не играет.
9 ноя 20, 17:08    [22228899]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Elic
Member

Откуда:
Сообщений: 29991
andrey_anonymous
Elic
клиент не всегда имеет место быть.
1. Клиент есть всегда.
Приложения могут подключаться к серверу не используя клиента Oracle.
9 ноя 20, 17:32    [22228920]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
graycode
Member

Откуда:
Сообщений: 468
Stax
фк хочет именно констраинта (почему-то индекса ему мало)

Потому что фк относится к миру ограничений целостности, а индекс относится к миру поисковых механизмов, то что технически уникальный индекс накладывает определенные ограничения и частично покрывает функции ограничения уникального ключа, никак не переводит индекс в разряд ограничений целостности.
9 ноя 20, 18:32    [22228966]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2798
graycode
Stax
фк хочет именно констраинта (почему-то индекса ему мало)

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


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

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

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

Откуда:
Сообщений: 29991
Stax
повторно
но ORA-00001: говорит о констраинте, которого как бы нет
И что из этого?
10 ноя 20, 10:02    [22229355]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6749
Stax,

Одно сообщение на нарушение уникальности, не стали делать переменную для подстановки index/constraint.
10 ноя 20, 10:04    [22229357]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
graycode
Member

Откуда:
Сообщений: 468
Stax,

Ты можешь создать триггер и проверять в нем какие то сложные ограничения бизнес-логики, в случае нарушения кидать исключение, триггер это constraint?
10 ноя 20, 12:39    [22229457]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2798
graycode
Stax,

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


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

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

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

Откуда: Ukraine,Lviv
Сообщений: 2798
env
Stax,

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


так я ж очем

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

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

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

Откуда:
Сообщений: 2257
graycode
Stax,

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

Нет.
Constraint - это декларативное объявление.
Отсутствующий до сих пор Assert - это constraint, а триггер - нет.
Триггер - это код, реализуемый с помощью sql procedural extension, в рамках той или иной событийной модели.
Это солома которую предлагается использовать в условиях невозможности или сознательного отказа
от реализации логических бизцес-правил декларативным путем.
Конопли не дадим, но вот тебе пенька, делай с ней что хош.

Сообщение было отредактировано: 10 ноя 20, 12:59
10 ноя 20, 13:02    [22229490]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
graycode
Member

Откуда:
Сообщений: 468
Stax
триггер не констраинт

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

.....
stax

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

Когда ты создаешь уникальный индекс, то Oracle вполне вправе предположить, что ты реализуешь какое то свое кастомное ограничение уникальности и генерировать соответствующую ошибку.
10 ноя 20, 14:31    [22229589]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
НеофитSQL
Member

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

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

....
stax


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

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

Если WiFi не показывается в списке, или \\win\share$ не показан в эксплорере, это не значит что их нет.
12 ноя 20, 06:46    [22230534]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
НеофитSQL
Member

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

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

Почему это так?
12 ноя 20, 06:53    [22230535]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2798
НеофитSQL

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

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

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


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

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

.....
stax
12 ноя 20, 09:37    [22230589]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
НеофитSQL
Member

Откуда: Маями
Сообщений: 760
Stax
НеофитSQL

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

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

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


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

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

.....
stax


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


Вроде работает.
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'
12 ноя 20, 18:51    [22231046]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6749
НеофитSQL,

Использование юника на соседней таблице в триггере для текущей в контексте этой темы это что-то вроде:
интернеты
- Я прекрасно понимаю семантику вопроса, но полностью игнорирую его суть.
- Вы могли бы привести пример?
- Мог бы.
13 ноя 20, 09:38    [22231241]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
НеофитSQL
Member

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

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

Я мог бы триггер написать и без использования constraint других таблиц, если это важно.
13 ноя 20, 17:32    [22231593]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Stax
Member

Откуда: Ukraine,Lviv
Сообщений: 2798
НеофитSQL
если это важно.


важно

.....
stax
13 ноя 20, 17:39    [22231602]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6749
НеофитSQL
Я мог бы триггер написать и без использования constraint других таблиц, если это важно.

Важно. Сделайте реализацию ограничения уникальности на одной таблице триггером для этой таблицы, без использования unique index/constraint на любой таблице.
13 ноя 20, 17:47    [22231611]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5   вперед  Ctrl      все
Все форумы / Oracle Ответить