我需要创建一个表,并仅当该表是新创建的时才插入第一条记录。
我用下面的语句创建了这个表:
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;仅当表刚创建时,如何插入第一条记录?
发布于 2019-01-05 22:59:59
将创建和插入合并到一条语句中:
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 ...子句。
发布于 2019-01-05 23:22:22
这是使用INSERT IGNORE命令而不是INSERT命令的好地方。
INSERT IGNORE INTO mytable (id, field1, field2) VALUES(1, 'foo', 'bar');执行INSERT语句时发生的
错误将被忽略。例如,在不使用IGNORE的情况下,重复表中现有唯一索引或主键值的行将导致重复键错误,并且语句将中止。如果使用IGNORE,则该行将被丢弃且不会发生错误。忽略的错误将生成警告。
https://stackoverflow.com/questions/54053043
复制相似问题