|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
В MySQL есть можно написать так: Код: plaintext
Всё, что смог нагуглить, это необходимость вручную писать такую функцию через pl/sql. Но я не верю, что Oracle не имеет возможности, которая есть в MySQL. Причём эта возможность весьма очевидная и полезная.. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:11 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoПричём эта возможность весьма очевидная и полезная..а можно пример необходимости? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:13 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoМожно сделать тоже самое в Oracle? Просто пиши CREATE TABLE. Если таблица уже есть, ничего не произойдёт. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:16 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovПросто пиши CREATE TABLE. Если таблица уже есть, ничего не произойдёт. Это не сработало: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:18 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
Андрей Панфилова можно пример необходимости? Я хочу организовать ленивую (lazy) таблицу. То есть чтобы она создавалась не сразу при создании схемы, а только по требованию. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:19 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoЭто не сработало: ORA-00955: имя уже задействовано для существующего объекта Ну и? Просто игнорируй эту ошибку. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:19 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
авторВсё, что смог нагуглить, это необходимость вручную писать такую функцию через pl/sql. можно и через pl/sql, но тогда обарачивать надо в еxcute immediate с обработкой ошибок. Смысла нет, пиши сразу, как указывали. Да и много DDL в системе- признак "непродуманности" построения данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:20 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoЯ хочу организовать ленивую (lazy) таблицу. То есть чтобы она создавалась не сразу при создании схемы, а только по требованию. А в чём фишка? Пустая таблица не занимает места, не добавляет накладных расходов. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:23 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovboraldoЭто не сработало: ORA-00955: имя уже задействовано для существующего объекта Ну и? Просто игнорируй эту ошибку. Что значит игнорируй? У меня исключение валится, я же не в визуальном клиенте это делаю, а через jdbc. Я конечно могу поймать его и сравнить код ошибки, но это костыль. Нормальное ПО не должно валить ошибку, если заранее известно, что её на самом деле нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:24 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoЯ конечно могу поймать его и сравнить код ошибки, но это костыль.бизнес-логика на эксепшенах - не круто, проверяйте сначала наличие таблицы (даже sqlplus позволяет). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:27 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
semenarДа и много DDL в системе- признак "непродуманности" построения данных. Я бы сказал, что это признак того, что это не примитивный онлайн-магазин, а сложная система, которая умеет управлять своими метаданными. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:27 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldo а сложная система, которая умеет управлять своими метаданными. с этого места подробнее пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:31 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
semenarэтого места подробнее пожалуйста.видимо крутая система, предвижу следующий вопрос: Как создать внешний ключ на sys.obj$ ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:36 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
Андрей Панфилов, после приведеннной ссылки вопрос снимается. Вам спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:43 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoэто не примитивный онлайн-магазин, а сложная система, которая умеет управлять своими метаданными. И при этом работает только если все пользователи используют одну учётную запись, причём эта запись имеет права на создание таблиц. Может, для MySQL это и нормально, а в других местах называется бардаком. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:45 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
semenarboraldo а сложная система, которая умеет управлять своими метаданными. с этого места подробнее пожалуйста. Подробнее не могу, ибо коммерческая тайна. Всё, что могу сказать, - нужно общаться к таблице, которой заранее нет и нужно при первом обращении её создать. Dimitry SibiryakovboraldoЯ хочу организовать ленивую (lazy) таблицу. То есть чтобы она создавалась не сразу при создании схемы, а только по требованию. А в чём фишка? Пустая таблица не занимает места, не добавляет накладных расходов. Число таких таблиц ничем неограничено, новые таблицы могут появиться в любой момент, причём в рантайме. По этой причине перечислить их в скрипте создания схемы невозможно. Число схем также неограничено, поэтому создать эту таблицу во всех схемах при появлении таблицы также невозможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:56 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoЧисло таких таблиц ничем неограничено, новые таблицы могут появиться в любой момент, причём в рантайме. Проектировщику базы - персональный эцих с гвоздями. Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:58 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovboraldoэто не примитивный онлайн-магазин, а сложная система, которая умеет управлять своими метаданными. И при этом работает только если все пользователи используют одну учётную запись, причём эта запись имеет права на создание таблиц. Может, для MySQL это и нормально, а в других местах называется бардаком. Пользователи вообще не работают с базой данных, они работают через веб-интерфейс, который сам обращается к БД через jdbc. Так что никакого бардака, всё в порядке. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 19:58 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
авторЧисло таких таблиц ничем неограничено , новые таблицы могут появиться в любой момент, причём в рантайме. По этой причине перечислить их в скрипте создания схемы невозможно. Число схем также неограничено , поэтому создать эту таблицу во всех схемах при появлении таблицы также невозможно . DBA при таком положении вещей- несчастный человек, разруливая права,аудит,гранты и прочее... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 20:00 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
semenarАндрей Панфилов, после приведеннной ссылки вопрос снимается. Вам спасибо. Если из этой ссылки вы подумали, что эта таблица - schemas , то вы ошибаетесь. Тот вопрос вообще о другом, к этой теме никак не относится. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 20:02 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
semenarавторЧисло таких таблиц ничем неограничено , новые таблицы могут появиться в любой момент, причём в рантайме. По этой причине перечислить их в скрипте создания схемы невозможно. Число схем также неограничено , поэтому создать эту таблицу во всех схемах при появлении таблицы также невозможно . DBA при таком положении вещей- несчастный человек, разруливая права,аудит,гранты и прочее... Ничего такого не нужно по причине описанной выше: пользователь БД может быть всего один, пользователи системы к базе доступа вообще не имеют. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 20:37 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoЧисло таких таблиц ничем неограничено, новые таблицы могут появиться в любой момент, причём в рантайме.Стоит также задуматься над созданием новой базы в рантайме и установке сервера. Тут могут помочь виртуальные машины. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 20:53 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoВ MySQL есть можно написать так: Код: plaintext
Всё, что смог нагуглить, это необходимость вручную писать такую функцию через pl/sql. Но я не верю, что Oracle не имеет возможности, которая есть в MySQL. Причём эта возможность весьма очевидная и полезная.. Какая-то странная логика... В мускуле, наверное, не предусмотрена работа с исключениями, поэтому и добавили такое в синтаксис. Иначе странно добавлять условие, единственной задачей которого является проглатывание ошибки. И даже в этом случае странно добавлять такие условия... ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 21:35 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
xtenderВ мускуле, наверное, не предусмотрена работа с исключениями, поэтому и добавили такое в синтаксис. Иначе странно добавлять условие, единственной задачей которого является проглатывание ошибки. И даже в этом случае странно добавлять такие условия... 1) В MySQL есть работа с ошибками 2) Речь не о попытке создать таблицу и проглотить исключение. В случае, если указана опция if not exists , БД должна проверить, есть ли такая таблица и только если нет, создать. Никаких проглатываний исключений. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 22:15 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoxtenderВ мускуле, наверное, не предусмотрена работа с исключениями, поэтому и добавили такое в синтаксис. Иначе странно добавлять условие, единственной задачей которого является проглатывание ошибки. И даже в этом случае странно добавлять такие условия... 1) В MySQL есть работа с ошибками 2) Речь не о попытке создать таблицу и проглотить исключение. В случае, если указана опция if not exists , БД должна проверить, есть ли такая таблица и только если нет, создать. Никаких проглатываний исключений. Как бы фантастично это не прозвучало, но даже без этой "опции" таблицу создаст только если ее нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2011, 22:25 |
|
|
start [/forum/topic.php?fid=52&msg=37048654&tid=1882371]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 169ms |
0 / 0 |