如何插入没有任何值的行,以便所有列都采用其默认值?

时间:2011-08-16 10:58:58

标签: php mysql

我需要做一些简单的事情 - 在MySQL中插入一行(使用PHP),但没有值。 MySQL表已经具有所需的默认值,因此我不需要插入任何值。如果没有要插入的值,insert语句将如何显示?

4 个答案:

答案 0 :(得分:49)

INSERT INTO my_table VALUES ()

答案 1 :(得分:11)

在SQL Server中就是这样。

insert into TableName default values

答案 2 :(得分:6)

正确的方法是提供一个空值列表,让字段隐式采用默认值:

INSERT INTO `table` () VALUES();

或者,您可以使用DEFAULT关键字:

INSERT INTO `table` (`Col1`, `Col2`, ...) VALUES(DEFAULT, DEFAULT, ...);

或者(假设您为所有列提供值):

INSERT INTO `table` VALUES(DEFAULT, DEFAULT, ...);

所有必需的信息都可以在the documentation for INSERT中找到:

  

如果没有为INSERT ... VALUES或指定列名列表   INSERT ... SELECT,表中每列的值必须是   由VALUES列表或SELECT语句提供。如果不这样做   知道表中列的顺序,使用DESCRIBE tbl_name来   找出来。

     

[..]

     

如果您没有在严格的SQL模式下运行,则任何列都不是显式的   给定值设置为其默认值(显式或隐式)。 For   例如,如果指定的列列表未指定所有列表   表中的列,未命名的列设置为其默认值。   第10.1.4节“数据类型”中描述了默认值赋值   默认值”。另请参见第1.8.6.2节“无效的约束”   数据”。

     

[..]

     

使用关键字DEFAULT将列显式设置为默认值   value。这使得编写分配的INSERT语句变得更容易   除了几列之外的所有值,因为它可以让您避免   写一个不包含值的不完整的VALUES列表   表格中的每一列。否则,你必须写出来   与VALUES列表中的每个值对应的列名列表。

     

[..]

     

如果列列表和VALUES列表都为空,则INSERT创建   每列设置为其默认值的行:

INSERT INTO tbl_name () VALUES();
     

[..]

     

在严格模式下,如果任何列没有默认值,则会发生错误   值。否则,MySQL使用任何隐式默认值   没有明确定义的默认值的列。

答案 3 :(得分:1)

您可以使用default values

insert YourTable default values