powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сделать if not exists в запросе create table ?
76 сообщений из 76, показаны все 4 страниц
Как сделать if not exists в запросе create table ?
    #37048641
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В MySQL есть можно написать так:
Код: plaintext
create table if not exists mytable (id int)
Можно сделать тоже самое в Oracle?

Всё, что смог нагуглить, это необходимость вручную писать такую функцию через pl/sql.
Но я не верю, что Oracle не имеет возможности, которая есть в MySQL. Причём эта возможность весьма очевидная и полезная..
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048644
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoПричём эта возможность весьма очевидная и полезная..а можно пример необходимости?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048649
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoМожно сделать тоже самое в Oracle?

Просто пиши CREATE TABLE. Если таблица уже есть, ничего не произойдёт.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048651
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovПросто пиши CREATE TABLE. Если таблица уже есть, ничего не произойдёт.


Это не сработало:
Код: plaintext
ORA- 00955 : имя уже задействовано для существующего объекта
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048653
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей Панфилова можно пример необходимости?
Я хочу организовать ленивую (lazy) таблицу. То есть чтобы она создавалась не сразу при создании схемы, а только по требованию.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048654
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoЭто не сработало:

ORA-00955: имя уже задействовано для существующего объекта
Ну и? Просто игнорируй эту ошибку.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048655
semenar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВсё, что смог нагуглить, это необходимость вручную писать такую функцию через pl/sql.
можно и через pl/sql, но тогда обарачивать надо в еxcute immediate с обработкой ошибок. Смысла нет, пиши сразу, как указывали. Да и много DDL в системе- признак "непродуманности" построения данных.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048656
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoЯ хочу организовать ленивую (lazy) таблицу. То есть чтобы она создавалась не сразу при
создании схемы, а только по требованию.

А в чём фишка? Пустая таблица не занимает места, не добавляет накладных расходов.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048662
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovboraldoЭто не сработало:

ORA-00955: имя уже задействовано для существующего объекта
Ну и? Просто игнорируй эту ошибку.

Что значит игнорируй? У меня исключение валится, я же не в визуальном клиенте это делаю, а через jdbc.
Я конечно могу поймать его и сравнить код ошибки, но это костыль.
Нормальное ПО не должно валить ошибку, если заранее известно, что её на самом деле нет.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048666
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoЯ конечно могу поймать его и сравнить код ошибки, но это костыль.бизнес-логика на эксепшенах - не круто, проверяйте сначала наличие таблицы (даже sqlplus позволяет).
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048667
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
semenarДа и много DDL в системе- признак "непродуманности" построения данных.
Я бы сказал, что это признак того, что это не примитивный онлайн-магазин, а сложная система, которая умеет управлять своими метаданными.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048669
semenar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldo а сложная система, которая умеет управлять своими метаданными.
с этого места подробнее пожалуйста.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048672
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
semenarэтого места подробнее пожалуйста.видимо крутая система, предвижу следующий вопрос: Как создать внешний ключ на sys.obj$
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048677
semenar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов, после приведеннной ссылки вопрос снимается. Вам спасибо.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048679
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoэто не примитивный онлайн-магазин, а сложная система, которая умеет управлять своими
метаданными.

И при этом работает только если все пользователи используют одну учётную запись, причём
эта запись имеет права на создание таблиц. Может, для MySQL это и нормально, а в других
местах называется бардаком.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048683
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
semenarboraldo а сложная система, которая умеет управлять своими метаданными.
с этого места подробнее пожалуйста.
Подробнее не могу, ибо коммерческая тайна.
Всё, что могу сказать, - нужно общаться к таблице, которой заранее нет и нужно при первом обращении её создать.

Dimitry SibiryakovboraldoЯ хочу организовать ленивую (lazy) таблицу. То есть чтобы она создавалась не сразу при
создании схемы, а только по требованию.

А в чём фишка? Пустая таблица не занимает места, не добавляет накладных расходов.

Число таких таблиц ничем неограничено, новые таблицы могут появиться в любой момент, причём в рантайме.
По этой причине перечислить их в скрипте создания схемы невозможно.
Число схем также неограничено, поэтому создать эту таблицу во всех схемах при появлении таблицы также невозможно.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048687
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoЧисло таких таблиц ничем неограничено, новые таблицы могут появиться в любой момент,
причём в рантайме.

Проектировщику базы - персональный эцих с гвоздями.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048688
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakovboraldoэто не примитивный онлайн-магазин, а сложная система, которая умеет управлять своими
метаданными.

И при этом работает только если все пользователи используют одну учётную запись, причём
эта запись имеет права на создание таблиц. Может, для MySQL это и нормально, а в других
местах называется бардаком.


Пользователи вообще не работают с базой данных, они работают через веб-интерфейс, который сам обращается к БД через jdbc.
Так что никакого бардака, всё в порядке.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048690
semenar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЧисло таких таблиц ничем неограничено , новые таблицы могут появиться в любой момент, причём в рантайме.
По этой причине перечислить их в скрипте создания схемы невозможно.
Число схем также неограничено , поэтому создать эту таблицу во всех схемах при появлении таблицы также невозможно .
DBA при таком положении вещей- несчастный человек, разруливая права,аудит,гранты и прочее...
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048691
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
semenarАндрей Панфилов, после приведеннной ссылки вопрос снимается. Вам спасибо.
Если из этой ссылки вы подумали, что эта таблица - schemas , то вы ошибаетесь. Тот вопрос вообще о другом, к этой теме никак не относится.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048716
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
semenarавторЧисло таких таблиц ничем неограничено , новые таблицы могут появиться в любой момент, причём в рантайме.
По этой причине перечислить их в скрипте создания схемы невозможно.
Число схем также неограничено , поэтому создать эту таблицу во всех схемах при появлении таблицы также невозможно .
DBA при таком положении вещей- несчастный человек, разруливая права,аудит,гранты и прочее...
Ничего такого не нужно по причине описанной выше: пользователь БД может быть всего один, пользователи системы к базе доступа вообще не имеют.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048720
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoЧисло таких таблиц ничем неограничено, новые таблицы могут появиться в любой момент, причём в рантайме.Стоит также задуматься над созданием новой базы в рантайме и установке сервера. Тут могут помочь виртуальные машины.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048748
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
boraldoВ MySQL есть можно написать так:
Код: plaintext
create table if not exists mytable (id int)
Можно сделать тоже самое в Oracle?

Всё, что смог нагуглить, это необходимость вручную писать такую функцию через pl/sql.
Но я не верю, что Oracle не имеет возможности, которая есть в MySQL. Причём эта возможность весьма очевидная и полезная..
Какая-то странная логика... В мускуле, наверное, не предусмотрена работа с исключениями, поэтому и добавили такое в синтаксис. Иначе странно добавлять условие, единственной задачей которого является проглатывание ошибки. И даже в этом случае странно добавлять такие условия...
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048790
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtenderВ мускуле, наверное, не предусмотрена работа с исключениями, поэтому и добавили такое в синтаксис. Иначе странно добавлять условие, единственной задачей которого является проглатывание ошибки. И даже в этом случае странно добавлять такие условия...
1) В MySQL есть работа с ошибками
2) Речь не о попытке создать таблицу и проглотить исключение. В случае, если указана опция if not exists , БД должна проверить, есть ли такая таблица и только если нет, создать. Никаких проглатываний исключений.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048801
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
boraldoxtenderВ мускуле, наверное, не предусмотрена работа с исключениями, поэтому и добавили такое в синтаксис. Иначе странно добавлять условие, единственной задачей которого является проглатывание ошибки. И даже в этом случае странно добавлять такие условия...
1) В MySQL есть работа с ошибками
2) Речь не о попытке создать таблицу и проглотить исключение. В случае, если указана опция if not exists , БД должна проверить, есть ли такая таблица и только если нет, создать. Никаких проглатываний исключений.
Как бы фантастично это не прозвучало, но даже без этой "опции" таблицу создаст только если ее нет.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048802
semenar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1) В MySQL есть работа с ошибками
В оракле тоже - Exception.
автор2) Речь не о попытке создать таблицу и проглотить исключение. В случае, если указана опция if not exists, БД должна проверить, есть ли такая таблица и только если нет, создать. Никаких проглатываний исключений.

для такого рода реализации- хранимая процедура + exception. Тебе в соседней ветке уже и премер дали.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048805
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldo2) Речь не о попытке создать таблицу и проглотить исключение. В случае, если указана опция if not exists , БД должна проверить, есть ли такая таблица и только если нет, создать. Никаких проглатываний исключений.А в чем разница. Разве что, в желаемом вами варианте, если сначала проверять существование, то между проверкой и созданием может кто-то вклиниться и создать объект в этом же неймспейсе. Кстати, MySQL create table if not exists проверяет существование именно таблицы с указанным именем?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048816
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtenderboraldo2) Речь не о попытке создать таблицу и проглотить исключение. В случае, если указана опция if not exists , БД должна проверить, есть ли такая таблица и только если нет, создать. Никаких проглатываний исключений.
Как бы фантастично это не прозвучало, но даже без этой "опции" таблицу создаст только если ее нет.
Да, но ещё выкинет исключение, чего не хотелось бы.
Речь ведь о возможности. Такая возможность никому бы не помешала. Причём я бы понял, если бы какие-то разумные условия мешали бы существованию такой опции. А так получается создатели Oracle просто поленились.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048822
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoсоздатели Oracle просто поленились.Создатели оракла много в чем поленились. Потому так ценятся разработчики под этот конструктор генитальных идей.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048824
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
semenarавтор1) В MySQL есть работа с ошибками
В оракле тоже - Exception.
Я не утверждал, что в Oracle её нет.

semenarавтор2) Речь не о попытке создать таблицу и проглотить исключение. В случае, если указана опция if not exists, БД должна проверить, есть ли такая таблица и только если нет, создать. Никаких проглатываний исключений.

для такого рода реализации- хранимая процедура + exception. Тебе в соседней ветке уже и премер дали.
На plsql я и сам мог бы написать. Я уже несколько раз подчеркнул это. Неприятно то, что приходится самому писать то, что могло бы уже само быть в языке. Вы скажете: "а может ты ещё чего захочешь и тогда создателям Oracle придётся уважить". Однако на это всё тот же аргумент: в данном случае я хочу не чего-то сверхъестественного и необычного. Раз это есть в MySQL, значит могло бы быть и в Oracle.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048827
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoРаз это есть в MySQL, значит могло бы быть и в Oracle.Ну чем-то должны себя тешить приверженцы ущербных СУБД.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048843
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
boraldo2) Речь не о попытке создать таблицу и проглотить исключение.
boraldoДа, но ещё выкинет исключение, чего не хотелось бы.
Сами себе противоречите...
Тем не менее, объясните сокровенный смысл подавления исключения в этом случае? Может еще и добавить опцию if not equals? А то вдруг существующая таблица не сходится с той, что хотите создать? И в delete добавить опцию if exists, а то вдруг попытаемся удалить из таблицы, которая не существует?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048850
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
xtenderboraldo2) Речь не о попытке создать таблицу и проглотить исключение.
boraldoДа, но ещё выкинет исключение, чего не хотелось бы.
Сами себе противоречите...

В чём противоречие? В обоих процитированных предложениях выкидывание исключения понимается как зло.

xtenderТем не менее, объясните сокровенный смысл подавления исключения в этом случае? Может еще и добавить опцию if not equals? А то вдруг существующая таблица не сходится с той, что хотите создать? И в delete добавить опцию if exists, а то вдруг попытаемся удалить из таблицы, которая не существует?
Смысл я уже объяснял выше.
Ваше высказывание про if not equals я тоже предусмотрел в этом комменте 10041082
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048852
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-boraldoРаз это есть в MySQL, значит могло бы быть и в Oracle.Ну чем-то должны себя тешить приверженцы ущербных СУБД.
Я понимаю, что в целом MySQL ущербен по сравнению с Oracle. Потому и спрашиваю, как всё это сделать на Oracle.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048860
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoПотому и спрашиваю, как всё это сделать на Oracle.не спрашиваете. "как это сделать" вы уже для себя решили. иначе хватило бы пары ответов.

И так и не ответили, проверяется ли весь неймспейс или только таблицы.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048873
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-boraldoПотому и спрашиваю, как всё это сделать на Oracle.не спрашиваете. "как это сделать" вы уже для себя решили. иначе хватило бы пары ответов.

И так и не ответили, проверяется ли весь неймспейс или только таблицы.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048878
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-boraldoПотому и спрашиваю, как всё это сделать на Oracle.не спрашиваете. "как это сделать" вы уже для себя решили. иначе хватило бы пары ответов.
Я имел в виду, что изначально я об этом спрашивал по этой причине.


-2-И так и не ответили, проверяется ли весь неймспейс или только таблицы.
В MySQL вроде нет понятия namespace, по крайней мере я не знаю.
create if not exists проверяет, есть ли в целевой схеме таблица с таким именем.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048945
Tolka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
схема - это нечто чётко очерченное и структурированное. Часто может менять логика приложения (pl/sql или внешний клиент). Структура в работающих приложениях меняется крайне редко. И в большинстве случаев - это расширение схемы.

динамическое создание таблиц приложением по факту действий юзеров - это просто жесть. Проектирование в особо извращённой форме.

Почитайте про темп таблицы. Может подойдёт.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048946
Tolka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-boraldoЧисло таких таблиц ничем неограничено, новые таблицы могут появиться в любой момент, причём в рантайме.Стоит также задуматься над созданием новой базы в рантайме и установке сервера. Тут могут помочь виртуальные машины.

в мемориз ))
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37048984
bdsm_sql
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoАндрей Панфилова можно пример необходимости?
Я хочу организовать ленивую (lazy) таблицу. То есть чтобы она создавалась не сразу при создании схемы, а только по требованию.

11gR2 - отложенное создание сегментов
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049092
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tolkaдинамическое создание таблиц приложением по факту действий юзеров - это просто жесть. Проектирование в особо извращённой форме.
Таблицы естественно смогут создавать не любые юзеры, а только специальные. Можно понимать их как админов. Их конечное число, и они не полные укурки.

TolkaПочитайте про темп таблицы. Может подойдёт.
Выдержка из мануала:
A TEMPORARY table is visible only to the current connection, and is dropped automatically when the connection is closed.
Каким образом это поможет не создавать таблицу, если она уже есть?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049104
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoTolkaПочитайте про темп таблицы. Может подойдёт.
Выдержка из мануала:
A TEMPORARY table is visible only to the current connection, and is dropped automatically when the connection is closed.
Каким образом это поможет не создавать таблицу, если она уже есть?Из мануала по какому продукту?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049114
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RA\/ENboraldoпропущено...

Выдержка из мануала:
A TEMPORARY table is visible only to the current connection, and is dropped automatically when the connection is closed.
Каким образом это поможет не создавать таблицу, если она уже есть?Из мануала по какому продукту?
Это кокнретная выдержка из MySQL (запутался). Почитал по Oracle - по сути тоже самое. Данные в таблице доступны только внутри одной транзакциями или сессии. Вещь в принципе полезная, но каким образом это решает проблему, описанную в топике ?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049190
Tolka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чисто формально, да. В Оракл нет опции if not exist.

Для реализации желаемого поведения, вы можете делать, например, так:


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
declare
   ex_already_exists exception;
   pragma exception_init(ex_already_exists, - 00955 );
begin
   execute immediate 'create table t (id number)';
exception
   when ex_already_exists then
      dbms_output.put_line('Table already exists. Do nothing');
end;
/



toleg@xe: drop table t;

Table dropped.

toleg@xe: declare
   2      ex_already_exists exception;
   3      pragma exception_init(ex_already_exists, - 00955 );
   4   begin
   5      execute immediate 'create table t (id number)';
   6   exception
   7      when ex_already_exists then
   8         dbms_output.put_line('Table already exists. Do nothing');
   9   end;
  10   /

PL/SQL procedure successfully completed.

toleg@xe: /
Table already exists. Do nothing

PL/SQL procedure successfully completed.


Но всё дело в том, что динамическое создание таблиц - это зло. Вам об этом все пытаются намекнуть, но вы акцентируетесь на отсутствии такой опции.

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


Ваши юзеры создают однотипные таблицы? Если да, то можно создать единственный набор таких таблиц и данные по всем юзерам туда успешно складывать.

Если разнотипные, то как вопрос xtendera?

xtenderМожет еще и добавить опцию if not equals? А то вдруг существующая таблица не сходится с той, что хотите создать? И в delete добавить опцию if exists, а то вдруг попытаемся удалить из таблицы, которая не существует?

Опишите процесс, который вы автоматизируете, и который решается вами только таким способом. Может, подскажут другой. Более адекватный.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049499
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TolkaНо всё дело в том, что динамическое создание таблиц - это зло. Вам об этом все пытаются намекнуть, но вы акцентируетесь на отсутствии такой опции.
Да почему зло то? Админ хочет хранить некие данные в базе, создаёт таблицу. Чтобы ему не устанавливать клиента он заходит в приложение через веб и создаёт таблицу. По вашей логике вообще не нужно выполнять DDL через JDBC.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049509
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TolkaОпишите процесс, который вы автоматизируете, и который решается вами только таким способом. Может, подскажут другой. Более адекватный.
Админ хочет хранить некие данные в таблице, причём такая таблица должна быть во всех схемах.
Он заходит в условно "свою" схему, добавляет описание этой таблицы, а потом она должна появиться во всех схемах.
Число схем неограничено, в любой момент может появиться новая, поэтому тупо после его действия создать эту таблицу во всех схемах невозможно.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049511
брадобрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoTolkaНо всё дело в том, что динамическое создание таблиц - это зло. Вам об этом все пытаются намекнуть, но вы акцентируетесь на отсутствии такой опции.
Да почему зло то? Админ хочет хранить некие данные в базе, создаёт таблицу. Чтобы ему не устанавливать клиента он заходит в приложение через веб и создаёт таблицу. По вашей логике вообще не нужно выполнять DDL через JDBC.
в этом месте, если таблица существует, он должен получить ошибку "table exists", нахера весь этот огород?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049515
брадобрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoTolkaОпишите процесс, который вы автоматизируете, и который решается вами только таким способом. Может, подскажут другой. Более адекватный.
Админ хочет хранить некие данные в таблице, причём такая таблица должна быть во всех схемах.
Он заходит в условно "свою" схему, добавляет описание этой таблицы, а потом она должна появиться во всех схемах.
Число схем неограничено, в любой момент может появиться новая, поэтому тупо после его действия создать эту таблицу во всех схемах невозможно.
это какое-то странная муть в головах, насчет таблиц в каждой схеме.
какую задачу админ будет пытаться решить, создавая время от времени некие таблицы, которые должны появиться во всех схемах?
для этого невозможно создать одну таблицу со столбцом OWNER?
для этого не подойдет authid current_user?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049518
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
брадобрейboraldoДа почему зло то? Админ хочет хранить некие данные в базе, создаёт таблицу. Чтобы ему не устанавливать клиента он заходит в приложение через веб и создаёт таблицу. По вашей логике вообще не нужно выполнять DDL через JDBC.
в этом месте, если таблица существует, он должен получить ошибку "table exists", нахера весь этот огород?

Этот мой коммент никак не относится к теме поста. Он отвечает на это:
TolkaНо всё дело в том, что динамическое создание таблиц - это зло. Вам об этом все пытаются намекнуть, но вы акцентируетесь на отсутствии такой опции.

Зачем мне нужна опция if not exists я объясняю в предыдущем посте.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049520
Tolka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoАдмин хочет хранить некие данные в таблице, причём такая таблица должна быть во всех схемах.
Он заходит в условно "свою" схему, добавляет описание этой таблицы, а потом она должна появиться во всех схемах.
Число схем неограничено, в любой момент может появиться новая, поэтому тупо после его действия создать эту таблицу во всех схемах невозможно.

Данные в этой таблице одни для всех? Или каждый пользователь вправе их править на своё усмотрение? Если одни для всех - то

Код: plaintext
1.
2.
   create public synonym new_admin_table_syn for new_admin_table;
   grant select on new_admin_table_syn for public;

Если каждый юзер имеет право редактировать данные, то для этого создаётся одна таблица с доп. параметром owner - и она хранит данные по всем юзерам.

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

Для рядовых юзеров весь функционал чудесно умещается в одной схеме с одной доп. колонкой owner в таблицах. Да и всё.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049531
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoTolkaНо всё дело в том, что динамическое создание таблиц - это зло. Вам об этом все пытаются намекнуть, но вы акцентируетесь на отсутствии такой опции.
Да почему зло то? Админ хочет хранить некие данные в базе, создаёт таблицу. Чтобы ему не устанавливать клиента он заходит в приложение через веб и создаёт таблицу. По вашей логике вообще не нужно выполнять DDL через JDBC.
Админ Вова создал таблицу DATA_TABLE для хранения чего-нибудь. Потом админ Дима хочет создать таблицу DATA_TABLE для хранения другого чего-нибудь (или админ Вова впал в маразм и забыл про то, что таблица есть) - так что, CREATE IF NOT EXISTS должно сказать что "все ОК", но при этом НЕ СОЗДАТЬ таблицу? Эта логика из какого-то другого мира программирования, с которым я не знаком...
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049533
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TolkaДанные в этой таблице одни для всех?
Данные в таблице свои для каждой схемы.

TolkaЕсли каждый юзер имеет право редактировать данные, то для этого создаётся одна таблица с доп. параметром owner - и она хранит данные по всем юзерам.
Между таблицами могут быть связи и тогда всилу сказанного выше эту связь тяжело будет организовать.
Пример. Запись в таблице А должна ссылаться на запись таблицы B. И тогда если a ссылается на b, то должно выполняться равенство a.schema=b.schema. Такое можно организовать?

TolkaЕсли у вас большая система, и вы для каждого юзера создаёте отдельную схему...которую при чём надо ещё и постоянно динамически изменять...то мои вам соболезнования...
Схема естественно не каждого юзера, а для каждой условно говоря "тематики".
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049537
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RA\/ENboraldoпропущено...

Да почему зло то? Админ хочет хранить некие данные в базе, создаёт таблицу. Чтобы ему не устанавливать клиента он заходит в приложение через веб и создаёт таблицу. По вашей логике вообще не нужно выполнять DDL через JDBC.
Админ Вова создал таблицу DATA_TABLE для хранения чего-нибудь. Потом админ Дима хочет создать таблицу DATA_TABLE для хранения другого чего-нибудь (или админ Вова впал в маразм и забыл про то, что таблица есть) - так что, CREATE IF NOT EXISTS должно сказать что "все ОК", но при этом НЕ СОЗДАТЬ таблицу? Эта логика из какого-то другого мира программирования, с которым я не знаком...
Перечитайте этот коммент: 10043343
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049540
брадобрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoПеречитайте этот коммент: 10043343
ну вот я прочитал и нихрена не понял.
где именно ты объясняешь, зачем тебе if not exists
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049544
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
брадобрейboraldoПеречитайте этот коммент: 10043343
ну вот я прочитал и нихрена не понял.
где именно ты объясняешь, зачем тебе if not exists
Там написано: в предыдущем посте. Если Вам сложно вычислить предыдущий пост, даю ссылку 10043305 .
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049546
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoRA\/ENпропущено...

Админ Вова создал таблицу DATA_TABLE для хранения чего-нибудь. Потом админ Дима хочет создать таблицу DATA_TABLE для хранения другого чего-нибудь (или админ Вова впал в маразм и забыл про то, что таблица есть) - так что, CREATE IF NOT EXISTS должно сказать что "все ОК", но при этом НЕ СОЗДАТЬ таблицу? Эта логика из какого-то другого мира программирования, с которым я не знаком...
Перечитайте этот коммент: 10043343
Этот комент не раскрывает темы маразма админа Вовы. Как бедный админ узнает, что его жалкая попытка создать таблицу провалилась потому, что такая таблица уже есть? Тема там раскрыта "в предыдущем посте", который был написан позже того, как я начал писать свой. В общем, это как-то чудовищно слишком... В MySQL нет (public) синонимов? Отсюда такое странное решение по тиражированию строго одинаковых таблиц между схемами?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049547
Tolka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
create table users (us_id     number primary key us_pk,
                    name      varchar2( 30  char),
                    user_type varchar2( 30  char) -- EMPLOYEE, MANAGER, PR... "тематика"
);

create table a(id      number primary key
              ,data    varchar2( 30  char)
              ,user_id number constraint user_fk foreign key references users(us_id));

create table b(id number primary key
              ,data    varchar2( 30  char)
              ,a_id    number constraint a_fk foreign key references a(a_id)
              ,user_id number constraint user_fk foreign key references users(us_id));

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

и это всё в одной схеме

з.ы. команды писал по памяти. возможна ошибка в синтаксисе
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049552
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
RA\/ENboraldoпропущено...

Перечитайте этот коммент: 10043343
Этот комент не раскрывает темы маразма админа Вовы. Как бедный админ узнает, что его жалкая попытка создать таблицу провалилась потому, что такая таблица уже есть? Тема там раскрыта "в предыдущем посте", который был написан позже того, как я начал писать свой. В общем, это как-то чудовищно слишком... В MySQL нет (public) синонимов? Отсюда такое странное решение по тиражированию строго одинаковых таблиц между схемами?
Вы читали эти комменты: 10043305 (в нём объясняется, зачем нужна опция if not exists) и 10043435 (в нём объясняется, почему не хочется хранить всё в одной таблице) ?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049553
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tolka
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table users (us_id     number primary key us_pk,
                    name      varchar2( 30  char),
                    user_type varchar2( 30  char) -- EMPLOYEE, MANAGER, PR... "тематика"
);

create table a(id      number primary key
              ,data    varchar2( 30  char)
              ,user_id number constraint user_fk foreign key references users(us_id));

create table b(id number primary key
              ,data    varchar2( 30  char)
              ,a_id    number constraint a_fk foreign key references a(a_id)
              ,user_id number constraint user_fk foreign key references users(us_id));


Во-первых, как я уже писал, схема не на какждого юзера, а на каждую тему.

Во-вторых, каким образом тут обеспечивается условие a.user = b.user ?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049563
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoRA\/ENпропущено...

Этот комент не раскрывает темы маразма админа Вовы. Как бедный админ узнает, что его жалкая попытка создать таблицу провалилась потому, что такая таблица уже есть? Тема там раскрыта "в предыдущем посте", который был написан позже того, как я начал писать свой. В общем, это как-то чудовищно слишком... В MySQL нет (public) синонимов? Отсюда такое странное решение по тиражированию строго одинаковых таблиц между схемами?
Вы читали эти комменты: 10043305 (в нём объясняется, зачем нужна опция if not exists) и 10043435 (в нём объясняется, почему не хочется хранить всё в одной таблице) ? По поводу последнего - внешний ключ может быть составным - дальше желающие додумаются. Вы, кстати, с экономией JDBC-шных вызовов в теме про комментарий не рассматривали вариант реализации всей этой логики на стороне БД и на PL/SQL?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049571
Фотография RA\/EN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoВо-первых, как я уже писал, схема не на какждого юзера, а на каждую тему.

Во-вторых, каким образом тут обеспечивается условие a.user = b.user ?Не хочется Вас расстраивать, но в тупом оракле schema == user (если не подходить к вопросу философски и рассматривать схему строго как набор объектов, а юзера - как идентифицирующую подключившегося пользователя сущность).
По второму - гуглите sys_context и with check option.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049574
брадобрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoВы читали эти комменты: 10043305 (в нём объясняется, зачем нужна опция if not exists) и 10043435 (в нём объясняется, почему не хочется хранить всё в одной таблице) ?
я непонятно объясняю, но я также непонятно и думаю (с)
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049587
Tolka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoВо-первых, как я уже писал, схема не на какждого юзера, а на каждую тему.

Tolka
Код: plaintext
1.
2.
3.
4.
create table users (us_id     number primary key us_pk,
                    name      varchar2( 30  char),
                    user_type varchar2( 30  char) -- EMPLOYEE, MANAGER, PR... "тематика"
);


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.
create table a(id      number primary key
              ,data    varchar2( 30  char)
              ,user_id number constraint user_fk foreign key references users(us_id));

create table b(id number primary key
              ,data    varchar2( 30  char)
              ,a_id    number
              ,user_id number);

alter table b add constraint a_fk foreign key (a_id, user_id) references a (id, user_id);
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049701
boraldoАдмин хочет хранить некие данные в таблице, причём такая таблица должна быть во всех схемах.
Он заходит в условно "свою" схему, добавляет описание этой таблицы, а потом она должна появиться во всех схемах.

create table name as ( ... )
add to public role synonim

?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049858
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoTolkaНо всё дело в том, что динамическое создание таблиц - это зло. Вам об этом все пытаются намекнуть, но вы акцентируетесь на отсутствии такой опции.
Да почему зло то? Админ хочет хранить некие данные в базе, создаёт таблицу. Чтобы ему не устанавливать клиента он заходит в приложение через веб и создаёт таблицу. По вашей логике вообще не нужно выполнять DDL через JDBC.
вот именно. и сразу всё наладится.
вы просто слабо представляете, на какую ёлку упорно пытаетесь влезть.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37049887
semenar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawish, я это топикастеру упорно пытался объяснить еще в самом начале - 10040587 . Упорен черт возьми в своих заблуждениях..
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37050032
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
orawishboraldoПо вашей логике вообще не нужно выполнять DDL через JDBC.
вот именно. и сразу всё наладится.
вы просто слабо представляете, на какую ёлку упорно пытаетесь влезть.
Разговор пошёл интересно. Раз так, создал отдельную тему в ветке "Проектирование БД": 10044792 .
Предлагаю этот вопрос обсуждать там.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37050037
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Tolka
Код: plaintext
1.
alter table b add constraint a_fk foreign key (a_id, user_id) references a (id, user_id);

Это в общем-то решение. Можно подумать.
Коробит только, что ещё уникальный индекс придётся создать на пару a (id, user_id).
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37050040
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто-то уже как бэboraldoАдмин хочет хранить некие данные в таблице, причём такая таблица должна быть во всех схемах.
Он заходит в условно "свою" схему, добавляет описание этой таблицы, а потом она должна появиться во всех схемах.

create table name as ( ... )
add to public role synonim

?
Я так понимаю это создаёт таблицу из запроса. Но это всё равно придётся выполнять в какой-то конкетный момент на конкретной схеме. Каким образом эта таблица появится в остальных схемах?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37050052
овощщеедъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Остальные будут работать с единственной таблицей через синоним. О чем тебе уже талдычат раз пицотый в этой теме.

Ты не думал заняться тем, что у тебя хорошо получается?
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37050058
boraldo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
овощщеедъОстальные будут работать с единственной таблицей через синоним. О чем тебе уже талдычат раз пицотый в этой теме.
Синоним тут воообще не причём. Если будет одна таблица, то можно к ней и через qualifier схемы обращаться, это вообще не проблема.
Проблему я уже описал несколько раз, читайте внимательнее.

овощщеедъТы не думал заняться тем, что у тебя хорошо получается?
Я и занимаюсь.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #37050065
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boraldoПроблему я уже описал несколько раз, читайте внимательнее.

Не описал ты проблему. Ни разу. Только свои завирательные идеи класса "а вот сделаю чтобы
оно ещё и дым из ушей выпускало". Какую проблему ты пытаешься решить своими "ленивыми
таблицами"?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как сделать if not exists в запросе create table ?
    #39828795
Poprygun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пипец вы злые и срач ни о чём развели.
Чувак, копай в сторону списка таблиц (так же можно получить список триггеров, последовательностей, например) и Exception, например так:

Делать что-то, если таблица есть:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
BEGIN
    FOR cc IN (
        SELECT table_name
        FROM all_tables
        WHERE table_name = 'TableNameHere')
        LOOP
            EXECUTE IMMEDIATE 'DROP TABLE TableNameHere';
        END LOOP;
END;




Делать что-то, если таблицы нет:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
DECLARE
    itFound VARCHAR2(1000);
BEGIN
    SELECT table_name INTO itFound FROM all_tables WHERE table_name = 'TableNameHere');
EXCEPTION
    WHEN no_data_found THEN
        EXECUTE IMMEDIATE 'CREATE TABLE TableNameHere (id INT)';
END;
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #39828799
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PoprygunПипец вы злые и срач ни о чём развели.
Чувак, копай в сторонуЧудак, с ручника-то снимись.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #39828809
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Poprygun,

Ты-бы на дату посмотрел прежде чем некрофилией заниматься. Ну и усвой, Oracle не MS SQL - здесь таблицы создаются один раз а не динамически создал/удалил. Но даже если использовать такой порочный дизайн твой код может и не сработать. Медитируй над что есть ALL_TABLES.

SY.
...
Рейтинг: 0 / 0
Как сделать if not exists в запросе create table ?
    #39828818
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYТы-бы на дату посмотрел прежде чем некрофилией заниматься.Ты бы его другое из всех обоих сообщений посмотрел. Ему про некро- уже отвечали несколько лет назад.

Poprygun
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
DECLARE
    itFound VARCHAR2(1000);
BEGIN
    SELECT table_name INTO itFound FROM all_tables WHERE table_name = 'TableNameHere');
EXCEPTION
    WHEN no_data_found THEN
        EXECUTE IMMEDIATE 'CREATE TABLE TableNameHere (id INT)';
END;

Во-первых, уже предлагали "обарачивать надо в еxcute immediate с обработкой ошибок".
Во-вторых, код некорректный.
...
Рейтинг: 0 / 0
76 сообщений из 76, показаны все 4 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как сделать if not exists в запросе create table ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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