首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果不存在,则MySQL create table;如果已创建表,则仅插入记录

如果不存在,则MySQL create table;如果已创建表,则仅插入记录
EN

Stack Overflow用户
提问于 2019-01-05 22:37:14
回答 2查看 9.8K关注 0票数 2

我需要创建一个表,并仅当该表是新创建的时才插入第一条记录。

我用下面的语句创建了这个表:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS tableName (
    id int(9) NOT NULL, 
    col1 int(9) DEFAULT NULL, 
    col2 int(3) unsigned zerofill DEFAULT NULL,
    PRIMARY KEY(id)
)  ENGINE = InnoDB DEFAULT CHARSET = latin1;

仅当表刚创建时,如何插入第一条记录?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-05 22:59:59

将创建和插入合并到一条语句中:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS tableName (
    id int(9) NOT NULL, 
    col1 int(9) DEFAULT NULL, 
    col2 int(3) unsigned zerofill DEFAULT NULL,
    PRIMARY KEY(id)
)  ENGINE = InnoDB DEFAULT CHARSET = latin1
AS SELECT 1 AS id, 10 AS col1, 5 AS col2;

如果它不创建表,则忽略AS SELECT ...子句。

票数 9
EN

Stack Overflow用户

发布于 2019-01-05 23:22:22

这是使用INSERT IGNORE命令而不是INSERT命令的好地方。

代码语言:javascript
复制
INSERT IGNORE INTO mytable (id, field1, field2) VALUES(1, 'foo', 'bar');

来自the mysql documentation

执行INSERT语句时发生的

错误将被忽略。例如,在不使用IGNORE的情况下,重复表中现有唯一索引或主键值的行将导致重复键错误,并且语句将中止。如果使用IGNORE,则该行将被丢弃且不会发生错误。忽略的错误将生成警告。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54053043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档