mysql如果不存在就创建表,如果创建了表就插入记录

pftdvrlh  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(369)

我只需要创建一个表并插入第一条记录,如果该表是新创建的。
我确实使用以下语句创建表:

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;

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

gwo2fgha

gwo2fgha1#

这是使用insert ignore命令而不是insert命令的好地方。

INSERT IGNORE INTO mytable (id, field1, field2) VALUES(1, 'foo', 'bar');

从mysql文档:
执行insert语句时发生的错误将被忽略。例如,在不忽略的情况下,复制表中现有唯一索引或主键值的行将导致重复键错误,并且语句将中止。使用ignore时,将丢弃该行,并且不会发生错误。忽略的错误将生成警告。

a9wyjsp7

a9wyjsp72#

将创建和插入合并到单个语句中:

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 ... 忽略子句。

相关问题