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

Откуда: Санкт-Петербург
Сообщений: 1018
НеофитSQL
env
НеофитSQL,

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

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


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

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

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

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


В GUI PL-SQL Developer'а есть такая особенность:
Если выбираешь Показать структуру таблицы и потом нажимаешь Посмотреть SQL, то всё красиво, а если выбираешь Редактировать структуру таблицы и потом Просмотр SQL, то видишь чушь.
6 ноя 20, 16:08    [22227597]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
verter
Member

Откуда: Санкт-Петербург
Сообщений: 1018
версия девелопера 10.0.3.1701
6 ноя 20, 16:10    [22227598]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
НеофитSQL
Member

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


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


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

Там со второй попытки эксперт Том объясняет что это что-то связанное с кластерами, я не вникал.
6 ноя 20, 16:10    [22227600]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
НеофитSQL
Member

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

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


> 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.

С виндовым можно ещё повозмущаться на конструкции вида

> echo <<11111

> echo >>a:\\log.log

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


Напомнило анекдот: https://4tob.ru/anekdots/2457
6 ноя 20, 16:17    [22227604]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
НеофитSQL
Member

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

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


Очень дельное замечание.
Учту, а то как-то некомфортно было жать на "Show SQL" и гадать, правда там или нет.
6 ноя 20, 16:19    [22227605]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
env
Member

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

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

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

Рекомендация создавать первичный ключ кластерным индексом действительно есть. В ms sql server. И там кластерный индекс это совершенно другое понятие, прямо связанное с организацией хранения данных.
6 ноя 20, 16:21    [22227607]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
andrey_anonymous
Member

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

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

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

НеофитSQL

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

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

НеофитSQL

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

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

НеофитSQL

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

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

НеофитSQL

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

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

НеофитSQL

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

Шо? Опять?!
6 ноя 20, 17:06    [22227646]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18398
env
Рекомендация создавать первичный ключ кластерным индексом действительно есть. В ms sql server.

Именно.
В Oracle такого понятия нет.
Ближайший аналог - Index-organized table.
6 ноя 20, 17:08    [22227650]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
НеофитSQL
Member

Откуда: Маями
Сообщений: 760
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

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

Шо? Опять?!


Щас спою! :)

нет, ранее я рассуждал что первичный ключ можно заменить уникальным индексом.
Вы привели пример, который это опроверг: использование внешних ключей требует ключ в родительской таблице.
Этот ключ может быть первичным, или этот ключ может быть уникальным.
6 ноя 20, 18:07    [22227681]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
graycode
Member

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

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

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

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

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

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


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

Если знаете, скажите. Только не из учебника, а подумав.
6 ноя 20, 20:13    [22227749]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
graycode
Member

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

Так прочитай определения из учебника, а если ты не в состоянии понять самые самые простые вещи, ты ошибся специальностью.
6 ноя 20, 22:13    [22227807]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Stax
Member

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

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

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


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

Откуда:
Сообщений: 29991
Stax
есть констраинт или нет?
А сам как думаешь? И к чему спрашиваешь?
9 ноя 20, 11:14    [22228607]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
graycode
Member

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

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

PS: у тебя даже индекс стрёмный))
9 ноя 20, 13:58    [22228739]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Stax
Member

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

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

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


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

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

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

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

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

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

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

Дублирующиеся строки сам в табличку вставишь или помощь требуется?))
9 ноя 20, 14:14    [22228755]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Stax
Member

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

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


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

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

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

.....
stax

Сообщение было отредактировано: 9 ноя 20, 14:18
9 ноя 20, 14:21    [22228759]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
graycode
Member

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

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

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

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

Не знаю, я не модератор, но подозреваю что за советы из серии очумелые ручки.
9 ноя 20, 14:35    [22228772]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
Stax
Member

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

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


SQL> /
insert into test values(1,1)
*
ERROR at line 1:
ORA-00001: unique constraint (STAX.I$TEST$ID) violated 


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

парадокс

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

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

insert into test values(null,'1')

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

22227509
попадокс продолжается ...
9 ноя 20, 14:46    [22228780]     Ответить | Цитировать Сообщить модератору
 Re: глюк Pl-sql developer'а  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 6749
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 при создании таблицы.

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

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

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

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

Откуда: Москва
Сообщений: 18398
env
Независимо от того function-based или normal индекс определяет явный unique, будет создан одноимённый constraint, если его нет.

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

Откуда: Москва
Сообщений: 18398
Stax
так есть констраинт у таблички test, или нет?

Нет.
9 ноя 20, 15:33    [22228817]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3] 4 5   вперед  Ctrl      все
Все форумы / Oracle Ответить