Oracle- 表的自增长创建

  Oracle创建自增长要先写序列还要去写触发器,不像MSSQLSERVER那样方便。但也是麻烦,记录如下:

  Oracle中,可以为每张表的主键创建一个单独的序列,然后从这个序列中获取自动增加的标识符,把它赋值给主键。例如一下语句创建了一个名为customer_id_seq的序列,这个序列的起始值为1,增量为2。

create sequence customer_id_seq increment by 2 start with 1

一旦定义了customer_id_seq序列,就可以访问序列的curval和nextval属性。

  • curval:返回序列的当前值
  • nextval:先增加序列的值,然后返回序列值

  以下sql语句先创建了customers表,然后插入两条记录,在插入时设定了id和name字段的值,其中id字段的值来自于customer_id_seq序列。最后查询customers表中的id字段。

create table customers(id int primary key not null, name varchar(15));
insert into customers values(customer_id_seq.nextval, ‘name1‘);
insert into customers values(customer_id_seq.nextval, ‘name2‘);
select id from customers;

  如果在oracle中执行以上语句,查询结果为:

  

  通过触发器自动添加id字段

  从上述插入语句可以发现,如果每次都要插入customer_id_seq.nextval的值会非常累赘与麻烦,因此可以考虑使用触发器来完成这一步工作。

  创建触发器trg_customers

create or replace
trigger trg_customers before insert on customers for each row
begin
select CUSTOMER_ID_SEQ.nextval into :new.id from dual;
end;

  插入一条记录

insert into customers(name) values(‘test‘); 

  这是我们会发现这一条记录被插入到数据库中,并且id还是自增长的。

  

  创建的序列可以在这里查看到:

  

  原文地址:http://www.cnblogs.com/xwdreamer/archive/2012/06/08/2542277.html

时间: 2024-10-27 13:35:08

Oracle- 表的自增长创建的相关文章

oracle表空间扩容、创建、删除(解决表空间不足问题)

前言 整理一下之前使用oracle数据库遇到的表空间不足的问题,顺便水个博客. oracle表空间操作语句 1.改变已存在的数据文件的大小 ALTER TABLESPACE app_data ADD DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\EDWTEST\APP03.DBF' SIZE 20480M; 2.允许已存在的数据文件自动增长 ALTER DATABASE DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\

oracle表空间与用户创建

-------------------------创建表空间与用户 创建临时表空间 CREATE TEMPORARY TABLESPACE test_temp TEMPFILE '/u01/oracle/product/10.2.0/oradata/orcl/test_temp01.dbf ' SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE 2048M EXTENT MANAGEMENT LOCAL; 创建用户表空间 CREATE TABLESPACE test_

oracle表空间自增长

方式一:通过修改oracle database control 修改 第一步,点击开始--所有程序--Oracle - OraDb11g_home1--Database Control 第二步,通过google等浏览器登录该地址,(会提示网址不安全是否继续,请点击继续前往),输入超级管理员sys的用户名和密码,以SYSDBA角色进入 第三步,[服务器]--[表空间],找到对应的表空间, "编辑"按钮 在弹出来的表空间属性页面上,找到数据文件,再次点击"编辑"按钮,勾

oracle表空间创建及管理

一.数据文件和数据库逻辑存储结构: 一个表空间包含一个或多个数据文件,一个表空间包含一个或多个段,一个段包含一个或多个区,一个区包含一个或多个连续的数据库块,一个数据库块包含一个或多个操作系统块.段是对象存储基本单元,段中的区总是在同一个表空间中,可以跨数据文件.区是空间分配的基本单元,连续的数据块,不能跨数据文件.块是I/O 的基本单元,不能跨数据文件. 表空间的分类永久表空间 存放永久性数据,如表,索引等.临时表空间 不能存放永久性对象,用于保存数据库排序,分组时产生的临时数据.UNDO表空

Oracle 表的创建 及相关参数

1. 创建表完整语法 CREATE TABLE [schema.]table (column datatype [, column datatype] - ) [TABLESPACE tablespace] [PCTFREE integer] [PCTUSED integer] [INITRANS integer] [MAXTRANS integer] [STORAGE storage-clause] [LOGGING | NOLOGGING] [CACHE | NOCACHE] ]; 说明:

关于Oracle表空间数据文件自增长的一些默认选项

昨天,一个同事请教了一些关于Oracle表空间数据文件自增长的问题,解答过程中顺便整理起来,以后其他同事有同样的疑问时可以直接查阅. 实验内容: 创建MYTEST表空间,默认不开启自增长. 给MYTEST表空间添加一个数据文件,开启自增长,但是不设置自增长的SIZE. 给MYTEST表空间添加一个数据文件,开启自增长,指定自增长的SIZE. 操作过程记录如下:(已经将多余的结果进行过滤) [email protected]>CREATE TABLESPACE MYTEST DATAFILE '/

SQL创建Oracle表空间、用户以及给用户赋权的方法

//创建表空间 Create tablespace examination//创建表空间examination datafile 'c:\Oracle\zhangwei\examination.dbf'//与表空间关联的文件存放位置(要预先手动建好文件夹) size 100m//文件初始大小,千万不要写成mb(这里以下可略) autoextend on//文件大小可自动拓展 next 30m//每次拓展30m maxsize unlimited//不限制文件大小的上限 logging//生成对于

oracle 表空间的创建

注意点: 1.如果在PL/SQL 等工具里打开的话,直接修改下面的代码中[斜体加粗部分]执行 2.确保路径存在,比如[D:\oracle\oradata\Oracle9i\]也就是你要保存文件的路径存在 /*分为四步 */ /*第1步:创建临时表空间  */ create temporary tablespace user_temp   tempfile 'D:\oracle\oradata\Oracle9i\user_temp.dbf'  size 50m autoextend on next

ORACLE—003:Create之创建表前判断表是否存在

建表前如何判断表是否存在呢,因为table是不支持replace的.下面的sql能帮到你. create前先判断表是否存在.例如,如果存在则drop掉那个表.当然你也可以定义自己的操作. declare v_cnt Number; begin select count(*) into v_cnt from user_tables where upper(table_name) like '%TMP_CLOB_SQL%'; if v_cnt>0 then execute immediate 'DR

【Oracle XE系列之四】创建OracleXE表空间详解

创建OracleXE表空间示例 sqlplus /nolog connect sys as sysdba SQL> create tablespace OPFOCN  datafile 'C:\\oraclexe\\app\\oracle\\oradata\\PF\\opfo.dbf' size 1024m  autoextend on next 1m maxsize 3000m  extent management local  segment space management auto; 表