Oracle使用序列+触发器实现表自增主键

1.建表

-- Create table 创建表 test
create table TEST
(
  testid NUMBER not null,
  name   NVARCHAR2(20) not null
)

--comment 注释
comment on column TEST.testid  is 'ID';
comment on column TEST.name  is '名称';

-- Create/Recreate primary, unique and foreign key constraints 加主键
alter table TEST add constraint PK_TEST primary key (TESTID)


2.创建索引

CREATE SEQUENCE test_sequence
MINVALUE 1
MAXVALUE 999999999
START WITH 1
INCREMENT BY 1
CACHE 20
ORDER; 

3.创建触发器

CREATE OR REPLACE TRIGGER test_tg
BEFORE INSERT ON test 
FOR EACH ROW
	DECLARE
		-- local variables here
	BEGIN
		--注意 这里的 INTO:new. 后面加需要自增的字段名称 这里对应 test表中的 testid 列

		SELECT test_sequence.nextval INTO:new.testid FROM dual;
		
	END test_tg;

4.测试

--插值
INSERT INTO TEST VALUES(NULL,'卡卡西');
INSERT INTO TEST VALUES(NULL,'阿斯玛');
INSERT INTO TEST VALUES(NULL,'夕阳红');
INSERT INTO TEST VALUES(NULL,'雷藏');
INSERT INTO TEST(NAME) VALUES('皮卡丘')

--查询
SELECT *FROM TEST;

结果图:

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值