我需要创建表并仅在表刚刚创建时才插入第一条记录。
我使用以下语句创建表:
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;
仅在刚刚创建表的情况下,如何插入第一条记录?
答案 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');
在执行INSERT语句时发生的错误将被忽略。例如,如果没有IGNORE,则复制表中现有UNIQUE索引或PRIMARY KEY值的行会导致重复键错误,并且该语句将中止。使用IGNORE,该行将被丢弃,并且不会发生错误。忽略的错误会生成警告。