oracle 12c 列自增长 identity column
来源:互联网 发布:松下tda600编程软件 编辑:程序博客网 时间:2024/04/27 21:47
-- 针对mssql,mysql的列子增长优势,oracle12c实现了数据库的列自增长功能,其实内部还是用序列来实现的,SQL> alter session set container=pdb1;会话已更改。SQL> alter session set container=cdb$root;ERROR:ORA-01031: 权限不足SQL> select count(1) from user_objects; COUNT(1)---------- 0SQL> create table t1(id number GENERATED AS IDENTITY,name varchar2(10));表已创建。SQL> select object_name,object_type from user_objects;OBJECT_NAME------------------------------------------------------------------------------OBJECT_TYPE----------------------------------------------T1TABLEISEQ$$_92786SEQUENCESQL> set long 500SQL> select dbms_metadata.get_ddl('TABLE','T1') from dual;DBMS_METADATA.GET_DDL('TABLE','T1')------------------------------------------------------------------------------ CREATE TABLE "LOGE"."T1" ( "ID" NUMBER GENERATED ALWAYS AS IDENTITY MINVALUE 1 MAXVALUE 99999999999999999999999999 INCREMENT BY 1 START WITH 1 CACHE 20 NOORDER NOCYCLE NOT NULLNABLE, "NAME" VARCHAR2(10) ) SEGMENT CREATION DEFERRED PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING TABLESPACE "USERS"SQL> insert into t1 values('china');insert into t1 values('china') *第 1 行出现错误:ORA-00947: 没有足够的值SQL> insert into t1(name) values('china');已创建 1 行。SQL> commit;提交完成。SQL> select * from t1; ID NAME---------- -------------------- 1 chinaSQL> insert into t1 values(2,'usa');insert into t1 values(2,'usa')*第 1 行出现错误:ORA-32795: 无法插入到“始终生成”身份列SQL> update t1 set id=100 ;update t1 set id=100 *第 1 行出现错误:ORA-32796: 无法更新“始终生成”身份列SQL> select value from v$diag_info where name='Default Trace File';VALUE------------------------------------------------------------------------------G:\APP\ORACLE\diag\rdbms\orcl\orcl\trace\orcl_ora_7744.trcSQL> alter session set events '10046 trace name context forever,level 12';会话已更改。SQL> insert into t1 (name) values('Japan');已创建 1 行。SQL> commit;提交完成。SQL> alter session set events '10046 trace name context forever,level 12';会话已更改。-- 查看PARSING IN CURSOR #523432848 len=37 dep=0 uid=110 oct=2 lid=110 tim=92491773830 hv=1360139914 ad='7ff7ae59e50' sqlid='37wwf9j8j45na'insert into t1 (name) values('Japan')END OF STMTPARSE #523432848:c=0,e=76132,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,plh=4015265140,tim=92491773828EXEC #523432848:c=0,e=11550,p=0,cr=1,cu=5,mis=0,r=1,dep=0,og=1,plh=4015265140,tim=92491785524STAT #523432848 id=1 cnt=0 pid=0 pos=1 obj=0 op='LOAD TABLE CONVENTIONAL T1 (cr=1 pr=0 pw=0 time=11469 us)'STAT #523432848 id=2 cnt=1 pid=1 pos=1 obj=92787 op='SEQUENCE ISEQ$$_92786 (cr=0 pr=0 pw=0 time=11142 us)'WAIT #523432848: nam='SQL*Net message to client' ela= 5 driver id=1413697536 #bytes=1 p3=0 obj#=-1 tim=92491785935--修改属性SQL> alter table t1 modify (id number generated as identity minvalue 1 maxvalue999999 increment by 2 start with 1 cache 10);表已更改。-- 另外还有GENERATED BY DEFAULT AS IDENTITY、GENERATED BY DEFAULT ON NULL AS IDENTITY属性-- 2,12c之前实现方式SQL> drop table t2 purge;表已删除。SQL> create table t2 (id int,name varchar2(10));表已创建。SQL> create sequence seq_t2 2 increment by 1 minvalue 1 maxvalue 9999999999 start with 1 cache 10 order;序列已创建。SQL> create trigger t_t2 2 before insert on t2 3 for each row 4 begin 5 select seq_t2.nextval into :new.id from dual; 6 end; 7 /触发器已创建SQL> insert into t2(name) values('china');已创建 1 行。SQL> commit;提交完成。SQL> insert into t2(name) values('china');已创建 1 行。SQL> select * from t2; ID NAME---------- -------------------- 1 china 2 china
0 0
- oracle 12c 列自增长 identity column
- oracle 自增长列
- oracle实现自增长列
- oracle实现自增长列
- 如何用sql语句去掉列的自增长(identity)
- ADO.NET Entity Framework中自增长列问题 (Identity)
- Oracle中实现自增长列
- Oracle中实现自增长列
- Oracle 数据库实现自增长列
- oracle数据库设置列自增长
- Oracle中创建自增长列
- oracle 12c (内存列存储)IM column store
- 自增长列和序列的区别(identity与sequence的区别)
- Oracle_列自增长
- oracle中自增长列的实现方式
- Oracle实现类似SQL SERVER列自增长功能
- oracle 自动增长列
- oracle 自动增长列
- WPF中的颜色设置方式
- 飞机的航班代码/航班号码的编号规则
- swift之classfromString
- Mina SSL Filter安全加密过滤器相关知识介绍
- iOS开发中,应用内直接跳转到Appstore
- oracle 12c 列自增长 identity column
- java判断文件夹是否存在某一文件 如果存在就删除功能
- 前端一路躺过的坑
- Android 打开文件管理器,并返回选中文件的path
- getParameter 与 getAttribute的区别
- sikuli入门到进阶
- runloop 监听( CFRunLoopAddObserver)
- java.sql.date与java.util.date区别以及数据库中插入带时分秒的时间
- POST GET比较