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


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