問題
我有對於具有型整數的ID
柱(其也是主鍵)一些數據的表的新表項。創建新的ID
當一個新的數據條目添加到表中時,它應該得到一個新的ID,而插入該對象的應用程序不知道ID,但它應該由數據庫給出。例如,ID應分配爲0,1,2,...
假設我有新條目的所有其他數據,我將如何進行插入?通常情況下:
insert into T values(123, 'data');
但現在我不知道該用什麼來代替123 - 將你提供的ID和查詢數據庫中創建某種全局變量NEXTID
的/插入之前,每次更新該值變成T
?
的問題
- 如何處理這類問題?一個解決方案是併發保存是可取的。
- 如何通過Java/myBatis實現這一目標?我有一個與表結構相對應的Java類,並且應該將新對象添加到數據庫中,自動獲取新ID。
更新
我搜索了什麼是自動遞增。
- 是否存在將列聲明爲自動增量的標準SQL方式(與數據庫無關)?我正在使用Apache Derby和
GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1)
建議使用here。 - 如何插入包含自動增量列的表格?
- 如果可以同時訪問數據庫,插入後獲得創建的自動增量值的最佳方式是什麼?
我會接受,包括申報和插入:)解釋和說明SQL回答
您需要將該列聲明爲自動增量,並且不要給「id」字段賦予任何值。該值將自動生成。 – BobTheBuilder 2013-03-10 14:50:15
可能重複http:// stackoverflow。com/questions/9414826/sql-server-how-to-add-new-identity-column-and-populate-column-with-ids – DevelopmentIsMyPassion 2013-03-10 15:06:50
此外,顯式指定要填充的列名稱永遠不是一個壞主意: 'INSERT INTO tablename(columnname1,columnname2,...)VALUES(value1,value2,...)'。當您需要省略自動增量列時,對於某些SQL產品尤其重要。 – 2013-03-10 15:22:30