当前位置:首页 » 操作系统 » 数据库同义词

数据库同义词

发布时间: 2023-10-27 23:53:39

数据库里面同义词、序列是什么东西

这个应该是oracle里的吧?

同义词 synonym
相当于alias(别名),比如把user1.table1在user2中建一个同义词table1
create synonym table1 for user1.table1;
这样当你在user2中查select * from table1时就相当于查select * from user1.table1;

序列比较复杂,

在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。
1、Create Sequence
你首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限,
CREATE SEQUENCE emp_sequence
INCREMENT BY 1 -- 每次加几个
START WITH 1 -- 从1开始计数
NOMAXVALUE -- 不设置最大值
NOCYCLE -- 一直累加,不循环
CACHE 10;

一旦定义了emp_sequence,你就可以用CURRVAL,NEXTVAL
CURRVAL=返回 sequence的当前值
NEXTVAL=增加sequence的值,然后返回 sequence 值
比如:
emp_sequence.CURRVAL
emp_sequence.NEXTVAL

可以使用sequence的地方:
- 不包含子查询、snapshot、VIEW的 SELECT 语句
- INSERT语句的子查询中
- NSERT语句的VALUES中
- UPDATE 的 SET中

可以看如下例子:
INSERT INTO emp VALUES
(empseq.nextval, 'LEWIS', 'CLERK',7902, SYSDATE, 1200, NULL, 20);

SELECT empseq.currval FROM DUAL;

㈡ oracle数据库中循环同义词,怎么处理

1、 当用程序连接或者用plsql查询同义词时,如果出现ora-01775:同义词的循环链这样的问题。
一般是因为存在同义词,但同义词没有相应的对象。

2、 先查有没有循环的同义词。
select * from dba_synonyms
where table_owner='TEST'
and synonym_name<>table_name;

没有记录。

3、 再查同义词没有对象的数据库对象
select * from dba_synonyms
where table_owner='TEST'
and
synonym_name in
(select a.synonym_name from dba_synonyms a where a.table_owner='TEST'
minus
select object_name from user_objects)

4、 把查询出来的结果进行查询表
select * from DRILL_PRESON
如果该同义词没有相应的对象,则会包ora-01775的错误

5、 把这个同义词删除
drop public synonym DRILL_PRESON

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:710
制作脚本网站 发布:2025-10-20 08:17:34 浏览:972
python中的init方法 发布:2025-10-20 08:17:33 浏览:681
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:833
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:740
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1080
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:311
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:191
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:878
python股票数据获取 发布:2025-10-20 07:39:44 浏览:835