1Z0 |
您所在的位置:网站首页 › 全国各省gdp变化图 › 1Z0 |
创建同义词和序列 1、同义词(synonym) 同义词是对象的备选名称。分为公有同义词和私有同义词。 【创建公有synonym】 SQL>create public synonym emp for pb.employees@prod; 那么所有用户只需输入: SQL>select * from emp;
私有同义词是模式对象。他们要么必须在自己的模式中,要么必须用模式名限定。公有同义词的存在于模式无关。 创建同义词语法: CREATE [PUBLIC] SYNONYM synonym for OBJECT;
删除同义词的语法: DROP [PUBLIC] SYNONYM synonym ;
与视图一样,在下次访问同义词是自动重新编译,也可以显式地完成编译: ALTERSYNONYM synonym COMPILE;
【案例】 SQL>conn peenboo SQL>createsynonym emp_s for emp_anon_v; SQL>createsynonym dept_s for dept_anon_v; SQL>createsynonym dsum_s for dep_sum_v;
SQL>describeemp_s SQL>describeemp_anon_v;
SQL>select* from emp_s; SQL>insertinto dept_s values(99,'TEMP_DEPT',1800); SQL>insertinto emp_s values(sysdate,'AC_MGR',10000,0,99); SQL>updateemp_s set salary =salary *1.1; SQL>rollback; SQL>selectmax(salaries /staff) from dsum_s;
SQL>dropview emp_anon_v; SQL>dropview dept_anon_v;
SQL>select* from dep_sum_v; ---failed
SQL>alterview dept_sum_v compile; --failed
SQL>dropview dep_sum_v; SQL>select* from dsum_s; --failed SQL>alter synonym emp_s compile; --不会抛出错误,基于的视图已删除,同义词也处于破坏状态
SQL>dropsynonym emp_s; SQL>dropsynonym dept_s; SQL>dropsynonym dsum_s;
2、序列 (sequence) Sequence 是生成唯一整数值得结构。是用来生成主键的宝贵工具。序列机制与表、行锁机制及提交或回滚过程无关。
(1)创建序列语法: CREATESEQUENCE [shema.]sequencename [INCREMENTBY number] [STARTWITH number] [MAXVALUEnumber | NOMAXVALUE] [MINVALUEnumber |NOMINVALUE] [CYCLE|NOCYCLE] [CACHEnumber | NOCACHE] [ORDER|NOORDER];
1、sequence_name:指定序列的名字 2、STARTWITH start_num:指定序列从哪个整数开始,该值默认是1 3、INCREMENTBY increment_num:指定该序列每次增加的增量,该值默认为1 4、MINVALUEminimum_num:指定该序列的最小整数,该值必须小于等于start_num,而且必须小于maxmum_num 5、NOMINVALUE:指定升序序列的最小值为1,降序序列的最小值为-10^26 NOMINVALUE为默认值 6、MAXVALUEmaximum_num:指定该序列的最大整数,这个值必须大于等于start_num,而且必须大于minimum_num 7、NOMAXVALUE指定升序序列的最大值为10^27,降序序列的最大值为-1 NOMAXVALUE为默认值 8、CYCLE:指定该序列即使已经达到最大值或最小值也继续生成整数,当升序序列达到最大值时,下一个生成的值是最小值。当降序序列达到最小值时,下一个生成的值是最大值 9、NOCYCLE:指定该序列在达到最大值或最小值之后就不能再生成整数了,这个是默认值 10、CACHEcache_num:指定要保留在内存中整数的个数,默认要缓存的整数为20个,可以缓存的整数最少为2个,可以缓存的整数最多为 CELL(maximum_num-minimum_num)/ABS(increment_num) 11、NOCACHE指定不缓存任何整数 12、ORDER确保按照请求次序生成整数,在使用RAC时可以使用这个选项 13、NOORDERED不确保按照请求次序生成整数,这个是默认值 SQL>createsequence seq1;
(2)使用序列 伪列NEXTVAL 选择下一个值,伪列CURRVAL选择会话的上一个值(当前值)。 注:序列的CURRVAL是发送给当前会话的上一个值,不一定是发错的上一个值。直到选择了NEXTVAL后才能存在CURRVAL。
CREATESEQUENCE order_seq start with 10; Createsequence line_seq start with 10;
Insertinto orders(order_id,order_date,customer_id) Values(order_seq.nextval,sysdate,'1000'); Insertinto order_items(order_id,order_item_id,product_id) Values(order_seq.currval,line_seq.nextval,'A1111'); Insertinto order_items(order_id,order_item_id,product_id) Values(order_seq.currval,line_seq.nextval,'B111');
如果分析师指出序列不能有间隔,那么必须使用另一种生成唯一值的方式。 当前订单可以存储在该表中,并将它初始化为10: Createtable current_on(order_number number); Insertinto current_on values(10); Commit;
然后创建订单的代码将变成: Updatecurrent_on set order_number=order_number + 1; Insertinto orders(order_number,order_date,customer_number) Values((select order_number from current_on),sysdate,'1000'); Commit;
修改序列的语法如下:
ALTERSEQUENCE [shema.]sequencename [INCREMENTBY number] [STARTWITH number] [MAXVALUEnumber | NOMAXVALUE] [MINVALUEnumber |NOMINVALUE] [CYCLE|NOCYCLE] [CACHEnumber | NOCACHE] [ORDER|NOORDER];
Altersequence order_seq cache 1000; 如果希望将该序列重置为它的起始值,唯一的方法就是删除重建。 Dropsequence order_seq; |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |