java - 如何在 Oracle 中生成 ID?
问题描述
我想创建 sql 查询以在我的 Oracle 数据库中插入数据。
我阻止了 ID 部分,在我的 JAVA 代码上,我生成了这样的 ID。
@Id
@GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid", strategy = "uuid")
protected String id;
但我不知道如何在 SQL 中做到这一点。
谢谢!
解决方案
你在java端这样做有什么具体原因吗?这是数据库将更有效地处理的事情。如果这是一张新桌子,并且您可以选择,我会identity column
在您的桌子上使用。
例如(此解决方案在 99% 的情况下都可以正常工作):
create table test_tab
(id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY
CONSTRAINT test_tab_pk PRIMARY KEY
column1 VARCHAR2(10)
);
或者,如果您想根据 guid 生成一个 id,您可以使用以下语法。请注意,这里的 id 列仍然是一个数字 - 格式掩码 X 将其转换为十六进制值。
CREATE TABLE test_tab (
id NUMBER DEFAULT ON NULL to_number(sys_guid(),'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
CONSTRAINT test_tab_pk PRIMARY KEY,
column1 VARCHAR2(10 CHAR)
);
或者,如果它必须是 guid,那么您可以将主键列定义为 VARCHAR2 并存储实际的 guid。请注意,这不是最佳做法。
CREATE TABLE test_tab (
id VARCHAR2(50) default on null sys_guid()
CONSTRAINT test_tab_pk PRIMARY KEY,
column1 VARCHAR2(10 CHAR)
);
在插入语句中,您可以只保留 id 列,它将自动填充。
INSERT INTO test_tab(column1) VALUES ('Foobar');
推荐阅读
- c++ - 计算复利时遇到问题
- r - 填写R中一列中的空白行
- microsoft-graph-api - 根据用户id获取用户活动
- cmis - CMIS session.getObjectByPath 文件名 - 特殊字符问题
- google-cloud-firestore - 在 Firebase 中使用计划的 CloudTasksClient
- ios - 在 resetAnalyticsData() 调用之前,Flutter 的 Firebase Analytics 不会跟踪事件
- testing - 如何通过赛普拉斯通过谷歌测试登录?
- instance - 从我的谷歌云实例服务器下载速度非常慢
- html - 如何让复选框旁边的文本环绕?
- c# - 新蜜蜂!想要使用 C# 通过 SSIS(Visual Studio) 脚本任务将 Excel 工作表数据导入 DB 表