MySQL创建表(如果不存在),仅在创建表时插入记录

时间:2019-01-05 14:37:14

标签: mysql sql create-table

我需要创建表并仅在表刚刚创建时才插入第一条记录。

我使用以下语句创建表:

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;

仅在刚刚创建表的情况下,如何插入第一条记录?

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:1)

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

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

来自the mysql documentation

  

在执行INSERT语句时发生的错误将被忽略。例如,如果没有IGNORE,则复制表中现有UNIQUE索引或PRIMARY KEY值的行会导致重复键错误,并且该语句将中止。使用IGNORE,该行将被丢弃,并且不会发生错误。忽略的错误会生成警告。