MySQL仅在表不存在时才插入数据

时间:2008-11-14 22:01:06

标签: mysql sql database

严格使用SQL(没有PHP或其他任何东西),是否可以创建表并仅在该表不存在时将默认数据插入该表

5 个答案:

答案 0 :(得分:2)

使用CREATE TABLE ... SELECT格式:

create table if not exists tablename as
select * from defaultdata;

答案 1 :(得分:0)

这是一种方法:

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是SQL标准的MySQL扩展,可以插入,删除和插入。

答案 2 :(得分:0)

您可以对其中一个元数据表进行选择

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

你必须做一些研究才能弄清楚究竟是什么......

答案 3 :(得分:0)

您可以将表状态存储为变量,然后使用该变量来确定是否插入数据?例如:

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

Paul Morgan的回答是,它希望数据已存在于另一个表中。 Jonas的回答非常耗费资源,特别是如果有很多替换(如果表存在则不需要)。

答案 4 :(得分:0)

可能是我错过了这一点,但为什么默认数据不能是一组插入语句...而只需要创建表,如果它不存在,则后跟insert语句...这种方式默认数据不必存在于不同的表中。