添加新行时,mysql表中的主索引是否自动具有值?

时间:2013-10-14 18:11:55

标签: php mysql sql pdo

所以,假设我有一个包含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)

还是会破桌子?

3 个答案:

答案 0 :(得分:4)

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

然而,第一种解决方案非常好。

答案 1 :(得分:0)

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

Mysql假设你没有输入下面的列名

INSERT INTO table (column_name1, column_name2, column_name3)

您将在稍后定义值定义中的所有列。在不定义列名的情况下,它不知道要为主键跳过哪一行。

如果您在上面的示例中将主键设置为column_name2,则可以使用此示例。

答案 2 :(得分:0)

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