基本上,我有一个用于通用SQL语句的PHP类:
object.table('table_name')
填充数组,其中'table_name'
的列名从table_schema中拉出
object.insert(data_array)
使用列数组和data_array
'table_name'
中运行一个insert语句
object.select('where')
使用where语句输入返回'table_name'
中的所有内容
我这样做是因为我很懒,我想让我的代码更漂亮。但是,架构查找会从我的表中返回ID
列,这很好,因为有时我需要使用object.select()
返回它。但是,它使object.insert()
有点困难。
是否有一些我不知道的SQL功能允许您准确地插入到自动增量列中,或者是否有一个更简单的解决方案就在我眼前,我只是一个完整的白痴。
答案 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的列。在构造插入时,了解数据类型也很有用。