|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoTolkaНо всё дело в том, что динамическое создание таблиц - это зло. Вам об этом все пытаются намекнуть, но вы акцентируетесь на отсутствии такой опции. Да почему зло то? Админ хочет хранить некие данные в базе, создаёт таблицу. Чтобы ему не устанавливать клиента он заходит в приложение через веб и создаёт таблицу. По вашей логике вообще не нужно выполнять DDL через JDBC. Админ Вова создал таблицу DATA_TABLE для хранения чего-нибудь. Потом админ Дима хочет создать таблицу DATA_TABLE для хранения другого чего-нибудь (или админ Вова впал в маразм и забыл про то, что таблица есть) - так что, CREATE IF NOT EXISTS должно сказать что "все ОК", но при этом НЕ СОЗДАТЬ таблицу? Эта логика из какого-то другого мира программирования, с которым я не знаком... ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2011, 22:26 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
TolkaДанные в этой таблице одни для всех? Данные в таблице свои для каждой схемы. TolkaЕсли каждый юзер имеет право редактировать данные, то для этого создаётся одна таблица с доп. параметром owner - и она хранит данные по всем юзерам. Между таблицами могут быть связи и тогда всилу сказанного выше эту связь тяжело будет организовать. Пример. Запись в таблице А должна ссылаться на запись таблицы B. И тогда если a ссылается на b, то должно выполняться равенство a.schema=b.schema. Такое можно организовать? TolkaЕсли у вас большая система, и вы для каждого юзера создаёте отдельную схему...которую при чём надо ещё и постоянно динамически изменять...то мои вам соболезнования... Схема естественно не каждого юзера, а для каждой условно говоря "тематики". ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2011, 22:27 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
RA\/ENboraldoпропущено... Да почему зло то? Админ хочет хранить некие данные в базе, создаёт таблицу. Чтобы ему не устанавливать клиента он заходит в приложение через веб и создаёт таблицу. По вашей логике вообще не нужно выполнять DDL через JDBC. Админ Вова создал таблицу DATA_TABLE для хранения чего-нибудь. Потом админ Дима хочет создать таблицу DATA_TABLE для хранения другого чего-нибудь (или админ Вова впал в маразм и забыл про то, что таблица есть) - так что, CREATE IF NOT EXISTS должно сказать что "все ОК", но при этом НЕ СОЗДАТЬ таблицу? Эта логика из какого-то другого мира программирования, с которым я не знаком... Перечитайте этот коммент: 10043343 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2011, 22:30 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoПеречитайте этот коммент: 10043343 ну вот я прочитал и нихрена не понял. где именно ты объясняешь, зачем тебе if not exists ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2011, 22:32 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
брадобрейboraldoПеречитайте этот коммент: 10043343 ну вот я прочитал и нихрена не понял. где именно ты объясняешь, зачем тебе if not exists Там написано: в предыдущем посте. Если Вам сложно вычислить предыдущий пост, даю ссылку 10043305 . ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2011, 22:36 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoRA\/ENпропущено... Админ Вова создал таблицу DATA_TABLE для хранения чего-нибудь. Потом админ Дима хочет создать таблицу DATA_TABLE для хранения другого чего-нибудь (или админ Вова впал в маразм и забыл про то, что таблица есть) - так что, CREATE IF NOT EXISTS должно сказать что "все ОК", но при этом НЕ СОЗДАТЬ таблицу? Эта логика из какого-то другого мира программирования, с которым я не знаком... Перечитайте этот коммент: 10043343 Этот комент не раскрывает темы маразма админа Вовы. Как бедный админ узнает, что его жалкая попытка создать таблицу провалилась потому, что такая таблица уже есть? Тема там раскрыта "в предыдущем посте", который был написан позже того, как я начал писать свой. В общем, это как-то чудовищно слишком... В MySQL нет (public) синонимов? Отсюда такое странное решение по тиражированию строго одинаковых таблиц между схемами? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2011, 22:39 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoTolkaЕсли каждый юзер имеет право редактировать данные, то для этого создаётся одна таблица с доп. параметром owner - и она хранит данные по всем юзерам. Между таблицами могут быть связи и тогда всилу сказанного выше эту связь тяжело будет организовать. Пример. Запись в таблице А должна ссылаться на запись таблицы B. И тогда если a ссылается на b, то должно выполняться равенство a.schema=b.schema. Такое можно организовать? В оракле семантика выглядит как schema_name.object_name Если вы имеете ввиду обычную связь форин ки, то какие проблемы? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Из каждой таблицы по конкретному user_id вы получите только то, что относится к конкретному юзеру. При этом никто вас не ограничивает в связях между а и b и это всё в одной схеме з.ы. команды писал по памяти. возможна ошибка в синтаксисе ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2011, 22:42 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
RA\/ENboraldoпропущено... Перечитайте этот коммент: 10043343 Этот комент не раскрывает темы маразма админа Вовы. Как бедный админ узнает, что его жалкая попытка создать таблицу провалилась потому, что такая таблица уже есть? Тема там раскрыта "в предыдущем посте", который был написан позже того, как я начал писать свой. В общем, это как-то чудовищно слишком... В MySQL нет (public) синонимов? Отсюда такое странное решение по тиражированию строго одинаковых таблиц между схемами? Вы читали эти комменты: 10043305 (в нём объясняется, зачем нужна опция if not exists) и 10043435 (в нём объясняется, почему не хочется хранить всё в одной таблице) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2011, 22:45 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
Tolka Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Во-первых, как я уже писал, схема не на какждого юзера, а на каждую тему. Во-вторых, каким образом тут обеспечивается условие a.user = b.user ? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2011, 22:48 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoRA\/ENпропущено... Этот комент не раскрывает темы маразма админа Вовы. Как бедный админ узнает, что его жалкая попытка создать таблицу провалилась потому, что такая таблица уже есть? Тема там раскрыта "в предыдущем посте", который был написан позже того, как я начал писать свой. В общем, это как-то чудовищно слишком... В MySQL нет (public) синонимов? Отсюда такое странное решение по тиражированию строго одинаковых таблиц между схемами? Вы читали эти комменты: 10043305 (в нём объясняется, зачем нужна опция if not exists) и 10043435 (в нём объясняется, почему не хочется хранить всё в одной таблице) ? По поводу последнего - внешний ключ может быть составным - дальше желающие додумаются. Вы, кстати, с экономией JDBC-шных вызовов в теме про комментарий не рассматривали вариант реализации всей этой логики на стороне БД и на PL/SQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2011, 22:54 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoВо-первых, как я уже писал, схема не на какждого юзера, а на каждую тему. Во-вторых, каким образом тут обеспечивается условие a.user = b.user ?Не хочется Вас расстраивать, но в тупом оракле schema == user (если не подходить к вопросу философски и рассматривать схему строго как набор объектов, а юзера - как идентифицирующую подключившегося пользователя сущность). По второму - гуглите sys_context и with check option. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2011, 22:58 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoВы читали эти комменты: 10043305 (в нём объясняется, зачем нужна опция if not exists) и 10043435 (в нём объясняется, почему не хочется хранить всё в одной таблице) ? я непонятно объясняю, но я также непонятно и думаю (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2011, 23:02 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoВо-первых, как я уже писал, схема не на какждого юзера, а на каждую тему. Tolka Код: plaintext 1. 2. 3. 4.
user_type был намёком на то, что, вполне возможно, вам достаточно всего одной схемы, для решения всех вопросов. Будет у вас 20 тематик - вы будете приложение размазывать по 20и схемам?... boraldoВо-вторых, каким образом тут обеспечивается условие a.user = b.user ? Объясните данное условие. Я писал, что в оракле семантика schema_name.object_name. Что такое а и b? Таблицы? Поле user должно совпадать в таблицах? Вот вам составной ключ Tolka Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2011, 23:11 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoАдмин хочет хранить некие данные в таблице, причём такая таблица должна быть во всех схемах. Он заходит в условно "свою" схему, добавляет описание этой таблицы, а потом она должна появиться во всех схемах. create table name as ( ... ) add to public role synonim ? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2011, 00:32 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoTolkaНо всё дело в том, что динамическое создание таблиц - это зло. Вам об этом все пытаются намекнуть, но вы акцентируетесь на отсутствии такой опции. Да почему зло то? Админ хочет хранить некие данные в базе, создаёт таблицу. Чтобы ему не устанавливать клиента он заходит в приложение через веб и создаёт таблицу. По вашей логике вообще не нужно выполнять DDL через JDBC. вот именно. и сразу всё наладится. вы просто слабо представляете, на какую ёлку упорно пытаетесь влезть. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2011, 05:06 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
orawish, я это топикастеру упорно пытался объяснить еще в самом начале - 10040587 . Упорен черт возьми в своих заблуждениях.. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2011, 08:54 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
orawishboraldoПо вашей логике вообще не нужно выполнять DDL через JDBC. вот именно. и сразу всё наладится. вы просто слабо представляете, на какую ёлку упорно пытаетесь влезть. Разговор пошёл интересно. Раз так, создал отдельную тему в ветке "Проектирование БД": 10044792 . Предлагаю этот вопрос обсуждать там. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2011, 13:31 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
Tolka Код: plaintext 1.
Это в общем-то решение. Можно подумать. Коробит только, что ещё уникальный индекс придётся создать на пару a (id, user_id). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2011, 13:33 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
Кто-то уже как бэboraldoАдмин хочет хранить некие данные в таблице, причём такая таблица должна быть во всех схемах. Он заходит в условно "свою" схему, добавляет описание этой таблицы, а потом она должна появиться во всех схемах. create table name as ( ... ) add to public role synonim ? Я так понимаю это создаёт таблицу из запроса. Но это всё равно придётся выполнять в какой-то конкетный момент на конкретной схеме. Каким образом эта таблица появится в остальных схемах? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2011, 13:37 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
Остальные будут работать с единственной таблицей через синоним. О чем тебе уже талдычат раз пицотый в этой теме. Ты не думал заняться тем, что у тебя хорошо получается? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2011, 13:51 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
овощщеедъОстальные будут работать с единственной таблицей через синоним. О чем тебе уже талдычат раз пицотый в этой теме. Синоним тут воообще не причём. Если будет одна таблица, то можно к ней и через qualifier схемы обращаться, это вообще не проблема. Проблему я уже описал несколько раз, читайте внимательнее. овощщеедъТы не думал заняться тем, что у тебя хорошо получается? Я и занимаюсь. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2011, 13:56 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
boraldoПроблему я уже описал несколько раз, читайте внимательнее. Не описал ты проблему. Ни разу. Только свои завирательные идеи класса "а вот сделаю чтобы оно ещё и дым из ушей выпускало". Какую проблему ты пытаешься решить своими "ленивыми таблицами"? Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2011, 14:08 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
Пипец вы злые и срач ни о чём развели. Чувак, копай в сторону списка таблиц (так же можно получить список триггеров, последовательностей, например) и Exception, например так: Делать что-то, если таблица есть: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Делать что-то, если таблицы нет: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2019, 14:13 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
PoprygunПипец вы злые и срач ни о чём развели. Чувак, копай в сторонуЧудак, с ручника-то снимись. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2019, 14:23 |
|
Как сделать if not exists в запросе create table ?
|
|||
---|---|---|---|
#18+
Poprygun, Ты-бы на дату посмотрел прежде чем некрофилией заниматься. Ну и усвой, Oracle не MS SQL - здесь таблицы создаются один раз а не динамически создал/удалил. Но даже если использовать такой порочный дизайн твой код может и не сработать. Медитируй над что есть ALL_TABLES. SY. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2019, 14:37 |
|
|
start [/forum/topic.php?fid=52&msg=37049701&tid=1882371]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 169ms |
0 / 0 |