2012-10-09 145 views
4

基本上,我有一個通用的SQL語句的PHP類:SQL INSERT INTO AUTO_INCREMENT列

  1. object.table('table_name')填充與'table_name'列名的數組拉出TABLE_SCHEMA的

  2. object.insert(data_array)運行的使用列陣列和data_array向'table_name'插入語句

  3. object.select('where')返回所有內容'table_name'使用where語句輸入或什麼也沒有

我這樣做是因爲我很懶,我想讓我的代碼更漂亮。然而,模式查找從我的表中返回ID列,這很好,因爲有時候我需要它返回object.select()。但是,它使object.insert()有點困難。

是否有一些我不知道的SQL功能可以讓你準確地插入自動增量列或者在我眼前有更簡單的解決方案,我只是一個完全的白癡。

回答

2

自動遞增的列不能插入。您可以執行您的插入(繞過自動遞增場),只是接受自動生成的ID ...

+0

MySQL確實支持在自動遞增字段中插入......但是當然這不是推薦的 – Barranka

1

您需要從插入語句省略id列,並使用last_insert_id()獲取最後插入鑰匙

1

不知道你正在使用,但在SQL服務器上,可以允許插入到標識列由RDBMS:

SET IDENTITY_INSERT dbo.MyTable ON 

但我不知道你爲什麼會想這樣做......

而是,當你這樣做時:obj ect.table('table_name')收集的不僅僅是列名,例如ColumnName,DataType,IsIdentity等。它可以通過多維數組或類來實現。

然後在插入/選擇,您可以過濾出IsIdentity的列。瞭解數據類型在構建插入時也很有用。