ORACLE创建id自增的表,及相关语句

新建下载权限记录表 DOWNLOADPOPE_TAB

字段:id、用户id、有下载权限的下载中心分类表id、有上传权限的下载中心分类表id

ID(int)、userid(int)、downid(string)、upid(string)

执行语句
//1创建
CREATE TABLE DOWNLOADPOPE_TAB
(
ID INT NOT NULL,
USERID INT NOT NULL,
DOWNID VARCHAR(60),
UPID VARCHAR(60),
CONSTRAINT DOWNLOADPOPE_TAB PRIMARY KEY (ID)
);
//2创建自动增长序列
CREATE SEQUENCE DOWNLOADPOPE_TAB_Sequence
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
CACHE 10;
//3创建触发器
CREATE TRIGGER DOWNLOADPOPE_TAB BEFORE
insert ON DOWNLOADPOPE_TAB FOR EACH ROW
begin
select DOWNLOADPOPE_TAB_Sequence.nextval into:New.id from dual;

end;
//4.提交
commit;
//5.插入
INSERT INTO DOWNLOADPOPE_TAB(userid,downid,upid)VALUES(100123,'oracle sql','54.70');
//6.查询
select * from jxpost.DOWNLOADPOPE_TAB
//7.删除数据
DELETE DOWNLOADPOPE_TAB where id=1
//8.删除表
DROP TABLE DOWNLOADPOPE_TAB
### Oracle 数据库中插入语句的自 ID 函数 在 Oracle 中,由于没有内置的 `AUTO_INCREMENT` 属性,通常通过 **序列(Sequence)** 和 **触发器(Trigger)** 来实现自主键的功能。以下是具体的使用方法和示例。 #### 1. 创建 Sequence 首先需要创建一个序列对象,该对象会生成连续递的数值。以下是一个典型的序列创建语法: ```sql CREATE SEQUENCE user_seq START WITH 1 -- 初始值为 1 INCREMENT BY 1 -- 每次递值为 1 NOCACHE -- 不缓存生成的值 NOCYCLE; -- 不循环重置到初始值 ``` 此命令定义了一个名为 `user_seq` 的序列[^5]。 #### 2. 创建并指定主键约束 接着创建一张,并为主键字段添加约束条件。例如: ```sql CREATE TABLE users ( id NUMBER(6) NOT NULL, name VARCHAR2(30) NOT NULL, PRIMARY KEY (id) ); ``` 上述 SQL 定义了一张名为 `users` 的,其中 `id` 字段作为主键[^1]。 #### 3. 插入数据时使用 Sequence 可以直接在 `INSERT` 语句中调用序列的 `.NEXTVAL` 方法获取下一个可用编号。例如: ```sql INSERT INTO users (id, name) VALUES (user_seq.NEXTVAL, 'Alice'); ``` 这里利用了之前创建的 `user_seq` 序列来自动填充 `id` 值[^2]。 #### 4. 配合 Trigger 实现自动化 为了进一步简化操作流程,还可以编写一个触发器,在每次向目标插入新记录前自动分配唯一的标识符给对应的主键列。下面展示的是这样一个例子: ```sql CREATE OR REPLACE TRIGGER trg_users_before_insert BEFORE INSERT ON users FOR EACH ROW BEGIN SELECT user_seq.NEXTVAL INTO :NEW.id FROM dual; END; / ``` 有了上面这段逻辑之后,后续执行插入动作就无需再手动指定 `id` 参数了,只需关心其他业务相关的信息即可。比如这样写就可以了: ```sql INSERT INTO users (name) VALUES ('Bob'); ``` 此时系统内部会依据设定好的规则完成整个过程。 --- ### 总结 综上所述,尽管 Oracle 并未直接支持类似于 MySQL 的 `AUTO_INCREMENT` 功能,但借助其强大的扩展能力——即 Sequences 加 Triggers 组合方案,则完全可以达到相同的效果。这种方法不仅灵活可控性强而且性能现优异,非常适合应用于实际生产环境当中去解决类似需求场景下的技术难题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值