如何使用AUTO_INCREMENT列将新行插入数据库而不指定列名?

Mis*_*hko 22 mysql sql insert auto-increment

我有一个包含以下列的表:

  • id- INT UNSIGNED AUTO_INCREMENT
  • name - VARCHAR(20)
  • group - VARCHAR(20)

我知道我可以像这样添加一行:

INSERT INTO table_name (name, group) VALUES ('my name', 'my group')
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以在不指定列名的情况下添加行,例如没有AUTO_INCREMENT列时?

Ike*_*ker 28

对于某些数据库,您只需NULLauto_increment列中明确插入:

INSERT INTO table_name VALUES (NULL, 'my name', 'my group')
Run Code Online (Sandbox Code Playgroud)

  • 但是,这是一种非常糟糕的做法,不应该这样做.如果列以某种方式重新排列,您应该始终使用列名称插入语句,您将把数据放在错误的列中.如果添加了另一列,则插入将失败.我不能忽视这种做法有多糟糕.由于一点点懒惰,您可以破坏您的数据完整性.老实说,因为你可以从对象浏览器拖动和drog列名,我们正在谈论冒险你的数据,因为你太懒了,不能在一个任务上多花一分钟. (14认同)

Fra*_*ens 11

更好的是,使用DEFAULT而不是NULL.您希望存储默认值,而不是可能触发默认值的NULL.

但是你最好用所有列命名,用一段SQL你可以创建你需要的所有INSERT,UPDATE和DELETE.只需检查information_schema并构建您需要的查询.没有必要手动完成,SQL可以帮助你.

  • 这对 Postgres 很有帮助。使用 NULL 会导致“错误:“id”列中的空值违反非空约束 (2认同)