1.情景展示
如何使用Navicat为Oracle数据库创建序列?
2.方式一
打开Navicat--》打开Oracle连接;
工具栏--》其它--》序列;
将会打开序列界面--》右键--》新建序列;
递增:1,开始值:1,最小:1,最大:9999999999999999999;
按Ctrl+s进行保存,并设置序列的名称,通常,它的构成是:SEQ_表名。
保存成功
3.方式二
通过SQL创建序列
CREATE SEQUENCE SEQ_META_DATABASE
minvalue 1
maxvalue 9999999999999999999
INCREMENT BY 1
START WITH 1;
新建查询,将以上代码粘贴进去,点击“运行”即可。
4.拓展延伸
我们知道:在mysql中,当将表的主键设置成自增列后,在后续,往表中插入数据的时候,如果我们主动给主键列插入值的话,mysql就会使用自增列,为其自动添加值。
在Oracle当中,我们是不是也可以搞成这样的效果?即:
当我们手动插入数据的时候,如果没有给主键设值的话,也让数据库默认取调用序列并将值插入表主键。
答案是可以的:通过序列和触发器来实现。
第一步:按照上面,给表创建序列;
第二步:设置对应表中字段主键字段的触发器。
CREATE
OR REPLACE TRIGGER 触发器名称 BEFORE INSERT ON 表名 FOR EACH ROW
WHEN ( NEW.表主键列 IS NULL ) BEGIN
SELECT
表对应的序列.NEXTVAL INTO : NEW.表主键列
FROM
DUAL;
END;
新建一个查询,将代码复制到查询窗口,点击“运行”;
如果报错信息如下:
ORA-24344: success with compilation error
选中表--》右键--》设计表--》触发器;
可以设置触发器的时机:插入、更新、删除;
指定关联的字段以及触发的时机:上述操作前触发还是操作后触发;
通过上述两步,实现在向表中插入数据前自动插入自增长的序列。
写在最后
哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!