MySQL вставляет данные, только если таблица не существует - PullRequest
0 голосов
/ 15 ноября 2008

Используя строго SQL (без PHP или чего-либо еще), возможно ли создать таблицу и вставить данные по умолчанию в эту таблицу , только если эта таблица не существует?

Ответы [ 5 ]

2 голосов
/ 15 ноября 2008

Используйте формат CREATE TABLE ... SELECT:

create table if not exists tablename as
select * from defaultdata;
0 голосов
/ 15 ноября 2008

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

0 голосов
/ 15 ноября 2008

Можете ли вы сохранить состояние таблицы как переменную, а затем использовать эту переменную, чтобы определить, вставлять ли данные? Пример:

@status = SHOW TABLES LIKE 'my_table';
INSERT INTO my_table VALUES (1,'hello'),(2,'world') WHERE @status <> false;

Проблема с ответом Пола Моргана состоит в том, что он ожидает, что данные уже существуют в другой таблице. Ответ Джонаса был бы чрезвычайно исчерпывающим, особенно если есть много ЗАМЕН (которые не нужны, если таблица существует).

0 голосов
/ 15 ноября 2008

Вы можете сделать выбор в одной из таблиц метаданных

if(not exists select * from whatever_meta where table_name = "whatever)
begin
   ...
end

Вам нужно было бы провести некоторое исследование, чтобы выяснить, как именно ...

0 голосов
/ 15 ноября 2008

Вот один из способов сделать это:

CREATE TABLE IF NOT EXISTS T (
  ID int(10) unsigned NOT NULL primary key,
  NAME varchar(255) NOT NULL
);

REPLACE INTO T SELECT 1, 'John Doe';
REPLACE INTO T SELECT 2, 'Jane Doe';

REPLACE - это расширение MySQL к стандарту SQL, которое либо вставляет, либо удаляет и вставляет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...