本文目錄一覽:
如何獲得mysql數據庫 自增長主鍵的值?
如果是自增長的話,直接用max函數即可。
如表為:
id
name
1
張三
2
李四
3
王五
其中id為自增長字段,如果要查詢目前主鍵的值,可用如下語句:
select max(id) as id from 表名;結果顯示為:
id
3
就說明目前id的值為3。
mysql 怎麼查詢某個表最後一個主鍵的值?
知道字段名嗎?
第一,查出主鍵名,
第二,使用主鍵來select.
SELECT
t.TABLE_NAME,
t.CONSTRAINT_TYPE,
c.COLUMN_NAME,
c.ORDINAL_POSITION
FROM
INFORMATION_SCHEMA.TABLE_CONSTRAINTS
AS
t,
INFORMATION_SCHEMA.KEY_COLUMN_USAGE
AS
c
WHERE
t.TABLE_NAME
=
c.TABLE_NAME
AND
t.TABLE_SCHEMA
=
‘test’
AND
t.CONSTRAINT_TYPE
=
‘PRIMARY
KEY’;
如何獲得mysql數據庫自增長主鍵的值?
this.employee_id = employee_id;}} 其它幾個屬性的getter和setter省略,這裡我們要用到ejb3-persistence.jar,JPA的註解類就在這個包中,下面詳細說明上面使用到的註解。@Entity:通過@Entity註解將一個類聲明為一個實體bean@Table:通過 @Table註解可以為實體bean映射指定表,name屬性表示實體所對應表的名稱,如果沒有定義 @Table,那麼系統自動使用默認值:實體的類名(不帶包名)@Id:用於標記屬性的主鍵@Column:表示持久化屬性所映射表中的字段,如果屬性名與表中的字段名相同,則可以省略@Column註解,另外有兩種方式標記,一是放在屬性前,另一種是放在getter方法前,例如:@Column(name = EMPLOYEE_NAME)private String employee_name; 或者@Column(name = EMPLOYEE_NAME)public String getEmployee_name() {return employee_name;} 這兩種方式都是正解的,根據個人喜好來選擇。大象偏向於第二種,並且喜歡將屬性名與字段名設成一樣的,這樣可以省掉@Column註解,使代碼更簡潔。@TableGenerator:表生成器,將當前主鍵的值單獨保存到一個數據庫表中,主鍵的值每次都是從指定的表中查詢來獲得,這種生成主鍵的方式是很常用的。這種方法生成主鍵的策略可以適用於任何數據庫,不必擔心不同數據庫不兼容造成的問題。大象推薦這種方式管理主鍵,很方便,集中式管理表的主鍵,而且更換數據庫不會造成很大的問題。各屬性含義如下:name:表示該表主鍵生成策略的名稱,這個名字可以自定義,它被引用在@GeneratedValue中設置的generator值中table:表示表生成策略所持久化的表名,說簡單點就是一個管理其它表主鍵的表,本例中,這個表名為GENERATOR_TABLEpkColumnName:表生成器中的列名,用來存放其它表的主鍵鍵名,這個列名是與表中的字段對應的pkColumnValue:實體表所對應到生成器表中的主鍵名,這個鍵名是可以自定義滴valueColumnName:表生成器中的列名,實體表主鍵的下一個值,假設EMPLOYEE表中的EMPLOYEE_ID最大為2,那麼此時,生成器表中與實體表主鍵對應的鍵名值則為3allocationSize:表示每次主鍵值增加的大小,例如設置成1,則表示每次創建新記錄後自動加1,默認為50@GeneratedValue:定義主鍵生成策略,這裡因為使用的是TableGenerator,所以,主鍵的生成策略為GenerationType.TABLE,生成主鍵策略的名稱則為前面定義的”tab-store”。這裡大象想說下,網上有很多文章寫的是strategy = GenerationType.AUTO或是strategy = GenerationType.SEQUENCE,採用SEQUENCE序列是因為Oracle數據中不支持identity自動增長,要想使用它,還得在數據庫中創建一個序列,如果要更換數據庫,那將是一個非常麻煩的事情。SEQUENCE生成方式我們暫且不談,這裡說下採用AUTO和IDENTITY的生成方式,本例採用的是SQL Server 2000作為數據庫,所以如果想使用AUTO或是IDENTITY生成策略,則一定要對主鍵加上identity標識,如identity(1,1)。不過對於AUTO來說,是根據不同的數據庫選擇最合適的自增主鍵生成策略。如果使用MySQL,則主鍵要定義AUTO_INCREMENT,如果是Oracle,則要創建Sequence來實現自增。不管採用何種生成策略,增、刪、改這些方法中一定要加入事務,否則數據是不會添加到數據庫中滴~~~這是大象反覆測試過的結果!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/235591.html