好吧,說我有一個兩列的表。 Entry_id和名稱。 Entry_id是一個ROWID NOT NULL。 本質上我只是希望它每增加一次新的東西就會增加。我如何在PreparedStatement中執行此操作。我不會知道正確的Entry_id BC沒關係。它應該每次都增加。所以,如果我可以將名稱插入表中並自動增加entry_id,那將會很好。任何想法如何做到這一點?使用java在oracle數據庫中自動增加RowID
2
A
回答
8
ROWID是表中某一行的物理地址。將ROWID用作鍵是沒有意義的 - 如果將表從一個表空間移動到另一個表空間,如果執行導出和導入操作,發生行移動等,則ROWID將隨時間而改變。而且它不會因爲結果很可能無效,因爲它不再是實際行的物理地址,或者它不再是有效的物理地址,因此增加ROWID是有意義的。
如果您希望在Oracle中使用自動遞增主鍵,則需要將列聲明爲NUMBER而不是ROWID。然後,您可以創建一個序列對象
CREATE SEQUENCE entry_id_seq
START WITH 1
INCREMENT BY 1
CACHE 100;
,並引用該序列的NEXTVAL
在INSERT
聲明
INSERT INTO entry(entry_id, name)
VALUES(entry_id_seq.nextval, :1);
當然,你可以創建一個之前,INSERT觸發器來填充來自主鍵序列
CREATE OR REPLACE TRIGGER get_entry_id
BEFORE INSERT ON entry
FOR EACH ROW
IS
BEGIN
SELECT entry_id_seq.nextval
INTO :new.entry_id
FROM dual;
END;
你INSERT
語句可以再省略ENTRY_ID
列,讓觸發器會自動填充它。
INSERT INTO entry(name)
VALUES(:1);
3
如果您對使用數據庫進行此操作的方式感到滿意,那麼通常的做法是使用oracle sequence。
後創建序列,它生活在你的代碼將沿
p = conn.prepareStatement("insert into mytable (entry_id, name) values (mysequence.next_val,?)");
p.setString(1,"My Name");
p.executeUpdate();
0
我使用的關鍵字「甲骨文」和「自動遞增」的臺詞數據庫。發現這個:http://situsnya.wordpress.com/2008/09/02/how-to-create-auto-increment-columns-in-oracle/
通過將觸發器與序列結合使用,不需要將oracle特定的構造包含到插入中,只需將entry_id的值從insert中的顯式值列表中移出。
相關問題
- 1. 'rowid'列不是自動增加的
- 2. 如何在Java derby中自動增加數據庫列?
- 3. 使用rowid從oracle數據庫中刪除重複的行?
- 4. 數據庫自動增加列
- 5. 在Oracle數據庫中獲取正確的自動增加的ID
- 6. 如何從Oracle數據庫中獲取自動遞增的PK?
- 7. 伯克利數據庫Java版自動增加主鍵
- 8. 使用Oracle數據庫在Java中啓動Crystal Report
- 9. 如何在Android中自動增加數據庫中的代碼?
- 10. 使用自動增量將值添加到數據庫Id
- 11. 使用jquery和php在數據庫中手動增加字段
- 12. 在數據庫中插入值自動增加ID
- 13. 在phpmyadmin數據庫表中自動增加月份
- 14. 自動增加數據庫表中的自定義ID
- 15. 表(數據庫)中的自動增量
- 16. 在oracle 10g中添加自動增量和自動遞減列
- 17. JPA:與Oracle數據庫自動遞增ID
- 18. 如何自動增加和自動更改數據庫列值
- 19. 如何在mysql數據庫中自動編號(自動增加)guid字段
- 20. Oracle數據庫 - 使用外部Java
- 21. 使用Java連接到Oracle數據庫
- 22. 使用Java連接到Oracle數據庫
- 23. 使用Java連接到Oracle數據庫
- 24. 將Oracle數據庫遷移到Cassandra並添加自動增量標識
- 25. hibernate - 如何在mysql和oracle數據庫中設置自動增量?
- 26. 從Oracle DB加載Java JTable數據庫
- 27. 如何啓用PowerDesigner 16.5自動增加MySQL數據庫主鍵?
- 28. 如何自動增加數據庫中的值? (LIVE)
- 29. Webservice返回自動增加數據庫中的值
- 30. SQL Server數據庫中的ID自動增加和更新
因此,先在我的數據庫中創建一個序列,然後執行該操作? – auwall 2011-05-18 15:27:11
是的 - Justin Cave的答案似乎給出了一個非常好的例子。 – DaveH 2011-05-18 15:29:44