0

所以,假设我有一个表,有 20 列,我想向它们插入数据,并且第一列只是一个主索引,如果我不为其分配一个数值,它将自动具有一个数值。主索引已启用自动增量。

所以我的问题是,我是否总是必须这样做(这很烦人而且很慢)

INSERT INTO table (col1,col2,col3,col4,col5,col6) VALUES (col1value,col2value,col3value,col4,value,col5value,col6value)

或者,我可以像这样指定值(假设我正在填充除主索引之外的每一列)

INSERT INTO table VALUES (col1values,col2values,col3values,col4values,col5values,col6values)

还是会打破桌子?

4

3 回答 3

4

不,您不能使用第二种解决方案,除非您提供与字段计数一样多的值。您仍然可以使用 提供主键值NULL。MySQL 然后将其替换为自动递增的值(假设您的列是 PRIMARY KEY + AUTO_INCREMENT)。

尽管如此,第一个解决方案非常好。

于 2013-10-14T18:15:56.067 回答
0

tldr; 您需要定义要插入的列。

Mysql 假设当您不输入如下所示的列名时

INSERT INTO table (column_name1, column_name2, column_name3)

稍后您将在值定义中定义所有列。如果不定义列名,它将不知道为主键跳过哪一行。

例如,如果您在上面的示例中将主键作为 column_name2 。

于 2013-10-14T18:19:09.480 回答
0

第一个是正确的。在第二个中,您可以将主键属性指定为 null 或使用INSERT INTO table VALUES('',col2values,col3values,col4values,col5values,col6values)假设第一个字段是主键。

于 2013-10-14T18:20:03.247 回答