MySQL的创建表,如果不存在,插入记录只有在创建表

问题描述 投票:2回答:2

我需要创建一个表,然后插入只有刚刚新创建的表中的第一条记录。

我确实创造了这个语句中的表:

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;

我要如何插入只有在刚创建的表中的第一个记录?

mysql sql create-table
2个回答
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
投票

这是一个好去处使用INSERT忽略命令而不是INSERT命令。

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

the mysql documentation

在执行INSERT语句中出现的错误被忽略。例如,如果没有IGNORE,即复制在表格中的现有唯一索引或主键值的行引起重复键错误并且该语句被中止。如果选择忽略,该行被丢弃,不会发生错误。忽略的错误生成警告代替。

© www.soinside.com 2019 - 2024. All rights reserved.