ORACLE中怎么设置SEQUENCE权限?

ORACLE中怎么设置SEQUENCE权限?,第1张

ORACLE中怎么设置SEQUENCE权限步骤如下:

1、Create Sequence

首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。

创建语句如下:

CREATE SEQUENCE seqTest

INCREMENT BY 1 -- 每次加几个

START WITH 1 -- 从1开始计数

NOMAXvalue -- 不设置最大值

NOCYCLE -- 一直累加,不循环

CACHE 10 --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE

2、得到Sequence值 

定义好sequence后,你就可以用currVal,nextVal取得值。

CurrVal:返回 sequence的当前值

NextVal:增加sequence的值,然后返回 增加后sequence值

得到值语句如下:

SELECT Sequence名称.CurrVal FROM DUAL 

如得到上边创建Sequence值的语句为:

select seqtest.currval from dual

在Sql语句中可以使用sequence的地方:

- 不包含子查询、snapshot、VIEW的 SELECT 语句

- INSERT语句的子查询中

- INSERT语句的values中

- UPDATE 的 SET中

如在插入语句中

insert into 表名(id,name)values(seqtest.Nextval,'sequence 插入测试')

3、Alter Sequence 

拥有ALTER ANY SEQUENCE 权限才能改动sequence. 可以alter除start至以外的所有sequence参数.如果想要改变start值,必须 drop sequence 再 re-create。

4、Drop Sequence

DROP SEQUENCE seqTest 

5、一个例子

create or replace trigger tri_test_id

before insert on S_Depart   --S_Depart 是表名

for each row

declare

nextid number

begin

IF :new.DepartId IS NULLor :new.DepartId=0 THEN --DepartId是列名

select SEQ_ID.nextval --SEQ_ID正是刚才创建的

into nextid

from sys.dual

:new.DepartId:=nextid

end if

end tri_test_id

开通其中2张表的查询权限,方法如下:

grant select on bas_checkcycle to jdc这个是整个语句。

语句分析:

grant select on bas_checkcycle to jdc;

这个颜色为执行语句。

这个颜色是数据表。

这个颜色是用户;就是需要权限的用户。

下面这个是查看,更新,删除,增加的权限都开启。

grant select,update,delete,insert on UserTagPool to [app_webservice]

grant select,update,delete,insert on UserTagPoolMap to [app_webservice]

扩展资料

Oracle权限管理

权限分类:

系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。

实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。

系统权限分类:

DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。

RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。

CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11392178.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存