在Oracle中使用自动递增列
在Oracle中使用自动递增列
Oracle 沒有類似 MS-SQL 可以直接修改欄位屬性,設定成自動編號欄位,所以我們必須透過 Sequence 物件的 nextval 方法,取得其下一個值,然後將此值新增至 TABLE 中,製造出有自動編號的效果。
建立Sequence 物件的語法:
CREATE SEQUENCE sequence_name
MINVALUE value
MAXVALUE value
START WITH value
INCREMENT BY value
CACHE value;
//建立 Table
Create Table MarsTest(
ID_ NUMBER(10,0) NOT NULL,
Content VARCHAR2(250)
);
//建立 Sequence
1.使用預設值
Create Sequence Seq_MarsTest;
2.使用自訂
Create Sequence Seq_MarsTest
MINVALUE 1
MAXVALUE 999999999999999999999999999
START WITH 1
INCREMENT BY 1
CACHE 20;
调用:
//新增資料
INSERT INTO MarsTest(ID_, Content)
VALUES (Seq_MarsTest.NEXTVAL, 'MarsTest');
從上面的例子,我們也可以發現到,我們是在 INSERT 時,才將 Sequence 與 Table 產生關係,所以 Sequence 不只是提供給特定 Table 使用,也能給其他任一個 Table 共用。
附:
修改序列
ALTER SEQUENCE dept_deptid_seq
INCREMENT BY 20
MAXVALUE 999999999999999999999999999
NOCACHE
NOCYCLE;
規則:
>必須為序列的所有者或者擁有ALTER特權
>修改對於以後的序列號生效
>序列必須是被刪除然後重新產生(使所有相關的對象失效,並且失去相應的關聯)
>修改時還要滿足些其他的驗證條件,比如說新的MAXVALUE不可以比現在的序列號低
刪除序列
DROP SEQUENCE dept_deptid_seq;
>必須要是序列的所有者或者有DROP ANY SEQUENCE的權限
相关文档:
№1:取得当前日期是本月的第几周
SQL> select to_char(sysdate,'YYYYMMDD W HH24:MI:SS') from
dual;
TO_CHAR(SYSDATE,'YY
-------------------
20030327 4 18:16:09
SQL> select to_char(sysdate,'W') from dual;
T
-
4 ......
因为强制关机,开机的时候进入数据库报错:
ora_01034:oracle not available
ora_27101:shared memory realm does not exit
解决方法:
1.打开CMD
2.输入 sqlplus "/as sysdba"
3.回车
4.输入 startup
5.结束 ......
Oracle 的管理可以通过OEM或者命令行接口。 Oracle Clusterware的命令集可以分为以下4种:
节点层:osnodes
网络层:oifcfg
集群层:crsctl, ocrcheck,ocrdump,ocrconfig
应用层:srvctl,onsctl,crs_stat
下面分别来介绍这些命令。
一. 节点层
只有一个命令: osnodes, 这 ......
ORACLE 10 学习笔记命令第一课。
1.
sqlplus /nolog
connect /as sysdba
alter user scott account unlock;
alter user scott identified by manager;
2.
grant select on dept to nmerp;
revoke select on dept to nmerp;
select * from scott.dept
create table abc(a varchar2(10),b char(10));
alter& ......