mysql如果存在则插入表中

时间:2016-06-02 16:39:03

标签: mysql

在我的项目中,我有两个代码路径,在首次设置时与MySQL交互。第一步是创建数据库结构,在这里,用户可以选择他们想要的功能 - 有些表可能不会在数据库中创建,具体取决于用户选择的内容。

在第二部分中,我需要预加载所做的用一些基本数据创建的表 - 如果表存在,我怎么能在这些表中插入行?

我知道IF NOT EXISTS但据我所知,这只适用于创建表格,我正在尝试做这样的事情

INSERT INTO table_a ( `key`, `value` ) VALUES ( "", "" ) IF EXISTS table_a;

这是通过一个包含大量条目的文件加载的,所以当表不存在时让它抛出错误不是一个选项。

2 个答案:

答案 0 :(得分:4)

IF (SELECT count(*)FROM information_schema.tables WHERE table_schema ='databasename'AND table_name ='tablename') > 0
THEN
INSERT statement 
END IF

使用信息模式检查表格是否存在

答案 1 :(得分:0)

如果你知道一个特定的表确实存在至少有1条记录(或者你可以创建一个只有一条记录的虚拟表),那么你可以这样做一个条件插入而不需要存储过程。

INSERT INTO table_a (`key`, `value`)
SELECT "", "" FROM known_table
WHERE EXISTS (SELECT *
FROM information_schema.TABLES
WHERE (TABLE_SCHEMA = 'your_db_name') AND (TABLE_NAME = 'table_a')) LIMIT 1;