導航:首頁 > 編程語言 > java自增主鍵

java自增主鍵

發布時間:2023-02-24 09:22:00

java如何在資料庫主鍵按順序自動生成

<hibernate-mapping>
<class name="com.so.pojo.City" table="CITY" schema="SOP">
<id name="id" type="java.lang.String">
<column name="ID" length="50" />
<generator class="native"></generator>
</id>
<property name="name" type="java.lang.String">
<column name="NAME" length="100" />
</property>
<property name="parent" type="java.lang.String">
<column name="PARENT" length="50" />
</property>
</class>
</hibernate-mapping>
用hibernate:
我的資料庫中有一個表示city,主鍵是id設置<generator class="native"></generator>就可以自動增長,就不用自己管了

② 在java中 主鍵生成策略(hibernate)都是指的是id的嗎

主鍵生成策略是指 <grnerator class="native"/>

1、 native
對於 oracle 採用 Sequence 方式,對於MySQL 和 SQL Server 採用identity(自增主鍵生成機制),native就是將主鍵的生成工作交由資料庫完成,hibernate不管(很常用)

2、assigned
在插入數據的時候主鍵由用戶自己添加,hibernate也不管(很常用)

3、increment
插入數據的時候hibernate會給主鍵添加一個自增的主鍵,但是一個hibernate實例就維護一個計數器,所以在多個實例運行的時候不能使用這個方法

4、sequence
調用資料庫的sequence來生成主鍵,要設定序列名,不然hibernate無法找到:
<param name="sequence">NAME_SEQ</param>(Oracle中很常用)

5、identity
使用SQL Server 和 MySQL 的自增欄位,這個方法不能放到 Oracle 中,Oracle 不支持自增欄位,要設定sequence(MySQL 和 SQL Server 中很常用)

6、hilo
使用hilo生成策略,要在資料庫中建立一張額外的表,默認表名為hibernate_unique_key,默認欄位為integer類型,名稱是next_hi(比較少用)
我們也可以自己設置自定義的表名和欄位名
<id name="id" type="integer">
<column name="id"/>
<generator class="hilo">
<param name="my_unique_key"/>
<param column="next_hi"/>
</generator>
</id>

7、sehilo
通過hilo演算法實現,但是主鍵歷史保存在Sequence中,適用於支持 Sequence 的資料庫,如 Oracle(比較少用)

8、uuid.hex
hibernate會算出一個128位的唯一值插入

9、uuid.string
hibernate會算出一個16位的值插入

10、foreign
使用外部表的欄位作為主鍵

11、select
使用觸發器生成主鍵(主要用於早期的資料庫主鍵生成機制,少用)

③ oracle主鍵自增 在java中怎麼設置

可以創建一個序列
-- Create sequence
create sequence SEQ_TEXT
minvalue 1
maxvalue 9999
start with 60
increment by 1
cache 20;
在插入數據的時候
INSERT INTO STUDENT(ID,NAME) VALUES(SEQ_TEXT.NEXTVAL,'張三');
這樣就可以了!

④ 為什麼java 中Derby主鍵自增每次都加100

據了解,derby資料庫對記錄項的預緩存項數就是100,
在你資料庫操作後沒有正常關閉資料庫和連接的情況,就會導致緩存中的[前一插入位置]丟失。
這個項可以在derby的設置屬性derby.language.sequence.preallocator中改,但縮小後緩存變小影響性能,應該去解決流程中的錯誤...
另外,作為鍵值(而不是數值),重點在保障唯一性,正確設計下即使增100也不影響...

⑤ Java程序連接Oracle資料庫時怎麼設置主鍵自增

在oracle中主鍵是不能自增的,不過可以創建一個序列
-- Create sequence
create sequence SEQ_TEXT
minvalue 1
maxvalue 9999
start with 60
increment by 1
cache 20;
在插入數據的時候
INSERT INTO STUDENT(ID,NAME) VALUES(SEQ_TEXT.NEXTVAL,'張三');
這樣就可以了

⑥ java中如何獲得自增長主鍵表中新插入行的主鍵 資料庫是sql server 2000.

如果主鍵值是
自增欄位就可以
insert
...
Select
@@identity
insert
into
userInfo
(loginName,loginPass,blance)
values('1','123',23)
Select
@@identity
這樣些sql語句就可以了
求滿意

⑦ java往資料庫sql中添加數據,怎麼讓主鍵自增

首先,你如果想把id列設置為自增列,直接在資料庫中將其設置為自增列就可以了。

然後,等你添加數據的時候使用如下的語句:

INSERTINTOdingdan(sname,snumber,rname,rnumber,address,beizhu,cdate)VALUES(?,?,?,?,?,?,?)

資料庫會自動幫你添加id列的值。 所以,你的這個代碼可以改為:

StringinsertCondition="INSERTINTOdingdan(sname,snumber,rname,rnumber,address,beizhu,cdate)VALUES(?,?,?,?,?,?,?)";
sql=con.prepareStatement(insertCondition);
sql.setString(1,handleString(sname));
sql.setString(2,handleString(snumber));
sql.setString(3,handleString(rname));
sql.setString(4,handleString(rnumber));
sql.setString(5,handleString(address));
sql.setString(6,handleString(beizhu));
sql.setTimestamp(7,newTimestamp(System.currentTimeMillis()));//獲取系統當前時間
intm=sql.executeUpdate();

⑧ java 用 jdbc 插入一條信息返回當前信息的主鍵id 怎樣寫 oracle的資料庫 主鍵序列自增

有兩種方法可以設置主鍵,一種是自增長主鍵,另一種就是生成唯一序列。
一、自增長主鍵
--首先建一個表TEST
create table TEST
(
NID int PRIMARY KEY,
test1 varchar2(20),
test2 varchar2(20),
test3 varchar2(20),
test4 varchar2(20),
test5 varchar2(20)
)
-- 再建一個序列SEQ_TEST
create sequence SEQ_TEST
minvalue 1 --最小值
nomaxvalue --不設置最大值
start with 1 --從1開始計數
increment by 1 --每次加1個
nocycle --一直累加,不循環
nocache; --不建緩沖區
以上代碼完成了一個序列(sequence)的建立過程,名稱為SEQ_TEST,范圍是從1開始到無限大(無限大的程度是由你機器決定的),nocycle 是決定不循環,如果你設置了最大值那麼你可以用cycle 會使seq到最大之後循環.對於nocache順便說一下如果你給出了cache值那麼系統將自動讀取你的cache值大小個seq,這樣在反復操作時會加快運行速度,但如果遭遇意外情況如當機了或Oracle死了,則下次取出的seq值將和上次的不連貫.(如果連不連貫無所謂建議用cache,因為時間就是金錢呀!)
你只有了表和序列還不夠,最好再建一個觸發器來執行它!代碼如下:
CREATE OR REPLACE TRIGGER tg_test
BEFORE INSERT ON test FOR EACH ROW WHEN (new.nid is null)
begin
select seq_test.nextval into:new.nid from al;
end;

下面是測試
select * from test
insert into test(nid,test1) values(6,'aaa')
insert into test(test1) values('bbb')

⑨ Java程序連接Oracle資料庫時怎麼設置主鍵自增,不涉及框架技術的

從表的鍵值改掉再更新主表的鍵值。
例如:CREATE OR REPLACE TRIGGER TRG_觸發器名 --創建觸發器
BEFORE INSERT OR UPDATE --意思是在插入或更新操作之前
ON 主表名 --為主表創建
REFERENCING OLD AS OLDROW NEW AS NEWROW --定義數據行
FOR EACH ROW
BEGIN
IF INSERTING THEN
--向主表插入時做的操作
ELSE
--更新主表時做的操作
--Update 從表的操作寫在這里就可以。
END IF;
END;
如果不是很清楚的話,你可以再上網查一下具體的觸發器寫法,祝你成功!

閱讀全文

與java自增主鍵相關的資料

熱點內容
安卓快手下載怎麼沒有下載到本地 瀏覽:228
怎麼在安卓手機登繪旅人 瀏覽:404
桌面文件全部加密 瀏覽:401
6s怎麼外接u盤需要什麼app 瀏覽:131
linux查看文件許可權命令 瀏覽:685
安卓手游存檔怎麼用 瀏覽:761
linuxyum安裝ftp 瀏覽:690
村委會主任可以推行政命令嗎 瀏覽:102
電腦文件夾封面多張圖片 瀏覽:263
網吧總伺服器叫什麼 瀏覽:922
多個演算法解決同一個問題 瀏覽:455
小車解壓後我的購車發票呢 瀏覽:977
做app開發用什麼雲伺服器 瀏覽:177
linux網卡子介面 瀏覽:985
21歲職高畢業學程序員怎麼學 瀏覽:321
vs如何對單個文件編譯 瀏覽:6
為什麼有的電腦不能安裝python 瀏覽:75
金蝶迷你版加密狗檢測到過期 瀏覽:186
硬體描述語言編譯結果 瀏覽:655
程序員逆天改命 瀏覽:19