java - Oracle sql 添加自增字段

标签 java sql oracle

我在 oracle 中制作了一个表,它使用自动递增字段的完整顺序。

这是sql:

CREATE TABLE Users(
   user_ID   INT          NOT NULL,
   user_name VARCHAR (20)     NOT NULL,
   user_password  VARCHAR (20)              NOT NULL,
   user_role  INT  NOT NULL,

   PRIMARY KEY (user_ID)
);

ALTER TABLE Users 
   ADD FOREIGN KEY (user_role) REFERENCES User_Roles (role_ID);
CREATE SEQUENCE seq_users
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;

现在我需要通过java程序将数据插入到表中,有什么办法,我不必像这样使用查询:

Insert into User_Roles values (seq_user_roles.nextval,'system admin');

User Role Table:
CREATE TABLE User_Roles(
       role_ID   INT              NOT NULL,
       role_name VARCHAR (20)     NOT NULL,


       PRIMARY KEY (role_ID)
);


CREATE SEQUENCE seq_user_roles
MINVALUE 1
START WITH 1
INCREMENT BY 1
CACHE 10;

我想从 java 程序中插入数据,但无法指定序列的名称。

最佳答案

Crete below 在序列创建后触发。因此它会将日期填充到您的列中。并且无需在插入语句脚本中提及 role_id 列。

CREATE OR REPLACE TRIGGER TRG_User_Roles_BRI
       BEFORE INSERT
       ON User_Roles
       REFERENCING NEW AS NEW OLD AS OLD
       FOR EACH ROW
    BEGIN
       :NEW.role_ID   := seq_user_roles.NEXTVAL;
    END;

关于java - Oracle sql 添加自增字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31934114/

相关文章:

sql - 具有数千个插入的 MySQL 事务 - 它需要多少个 "round trips"?

mysql - 使用 on 和 and case 进行多重连接返回错误结果

sql - 使用mysql中的年和月字段检索范围内的记录

oracle - 如何使用 Oracle PL/SQL Developer 创建转储?

SQL - MIN 和 COUNT 的组合

java - 在 Android 应用程序中,您将如何返回离开页面时的状态?

Java代理如何处理CONNECT请求

Java项目测试需要输入的方法

java - 为什么我的 JavaFX 窗口看起来到处都不一样?

sql - 如何在 SQL (Oracle) 中执行跨列唯一约束