создание таблицы, только если она не существует с ANSI SQL - PullRequest
3 голосов
/ 27 мая 2011

Я пытаюсь динамически создать таблицу SQL, только если она еще не существует.Я видел много решений в Интернете, но они обычно полагаются на конкретную базу данных, в то время как я пытаюсь найти наиболее общее решение.

Я думал о том, чтобы всегда запускать команду CREATE и затем предполагать, что если онасбой, то таблица существует, и я могу начать вставлять в нее данные.Я не вижу никаких недостатков в этом рассуждении (не считая проблем с производительностью), но могу ошибаться.

Является ли это приемлемым методом?

Можете ли вы предложить другие методы, не зависящие от базы данных или использующие ANSI SQL, которые могут быть приняты всеми СУБД?

Ответы [ 3 ]

0 голосов
/ 27 мая 2011

как насчет:

<code>create table if not exists
0 голосов
/ 27 мая 2011

INFORMATION_SCHEMA является частью стандарта ANSI SQL, поэтому вы должны иметь возможность:

IF NOT EXISTS(SELECT NULL FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'YourTable')
    CREATE TABLE...
0 голосов
/ 27 мая 2011

если есть таблица, скажем - EMP, означает ли это, что это та же самая EMP, которую вы ожидаете?

Либо запросите соответствующий словарь данных для структуры таблицы, либо заполните свой код тонной проверки ошибок и условной логики ...

...