SQL插入Auto_Increment列

时间:2012-10-09 22:59:45

标签: php sql

基本上,我有一个用于通用SQL语句的PHP类:

  1. object.table('table_name')填充数组,其中'table_name'的列名从table_schema中拉出

  2. object.insert(data_array)使用列数组和data_array

  3. 'table_name'中运行一个insert语句
  4. object.select('where')使用where语句输入返回'table_name'中的所有内容

  5. 我这样做是因为我很懒,我想让我的代码更漂亮。但是,架构查找会从我的表中返回ID列,这很好,因为有时我需要使用object.select()返回它。但是,它使object.insert()有点困难。

    是否有一些我不知道的SQL功能允许您准确地插入到自动增量列中,或者是否有一个更简单的解决方案就在我眼前,我只是一个完整的白痴。

3 个答案:

答案 0 :(得分:2)

无法插入自动递增的列。您可以执行插入(绕过自动递增的字段)并只接受自动生成的ID ...

答案 1 :(得分:1)

您需要省略insert语句中的id列,并使用last_insert_id()来获取最后插入的密钥

答案 2 :(得分:1)

不确定您使用的是哪个rdbms,但在SQL Server中,您可以通过以下方式允许插入标识列:

SET IDENTITY_INSERT dbo.MyTable ON

但我不确定你为什么要那样做......

相反,当你这样做:object.table('table_name')时,收集的不仅仅是列名,例如: ColumnName,DataType,IsIdentity等。它可以通过多维数组或类。

然后在插入/选择时,您可以过滤掉IsIdentity的列。在构造插入时,了解数据类型也很有用。