MySQL 仅在表不存在时插入数据
Posted
技术标签:
【中文标题】MySQL 仅在表不存在时插入数据【英文标题】:MySQL inserting data only if table doesn't exist 【发布时间】:2008-11-14 22:01:06 【问题描述】:仅使用严格的 SQL(没有 php 或其他任何东西),是否可以创建一个表并在该表不存在的情况下将默认数据插入该表?
【问题讨论】:
如果表存在,重要的部分什么都没有完成了吗? 【参考方案1】:使用 CREATE TABLE ... SELECT 格式:
如果不存在则创建表 tablename as 从默认数据中选择 *;
【讨论】:
【参考方案2】:这是一种方法:
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 扩展,可以插入、删除和插入。
【讨论】:
【参考方案3】:您可以在其中一个元数据表上进行选择
if(not exists select * from whatever_meta where table_name = "whatever)
begin
...
end
你必须做一些研究才能弄清楚到底是怎么...
【讨论】:
【参考方案4】:能否将表状态存储为变量,然后使用该变量来判断是否插入数据?例如:
@status = SHOW TABLES LIKE 'my_table';
INSERT INTO my_table VALUES (1,'hello'),(2,'world') WHERE @status <> false;
Paul Morgan 的答案的问题在于它期望数据已经存在于另一个表中。 Jonas 的回答将是极其详尽的资源,特别是如果有很多 REPLACES(如果表存在,则这是不必要的)。
【讨论】:
【参考方案5】:可能是我错过了重点,但为什么默认数据不能是一组插入语句......而只需要做的就是创建表,如果它不存在,然后是插入语句......这样默认数据就不必存在于不同的表中。
【讨论】:
根据条件,您最终可能会将垃圾数据添加到生产表中。以上是关于MySQL 仅在表不存在时插入数据的主要内容,如果未能解决你的问题,请参考以下文章
mysql插入数据时,判断是不是存在,存在则替代,不存在则直接插入,需要能够批量处理。