可以使用序列实现id自增,主键的语法为primary key。
成都创新互联10多年企业网站制作服务;为您提供网站建设,网站制作,网页设计及高端网站定制服务,企业网站制作及推广,对湿喷机等多个领域拥有多年的网站维护经验的网站建设公司。
当一个序列第一次被查询调用时,它将返回一个预定值。在随后的每次查询中,序列将产生一个按指定的增量增长的值。序列可以循环,或者是连续增加的,直到指定的最大值为止。
创建序列语法如下:create sequence [模式]序列名称[start with 起始数字] [increment by 增量][maxvalue 最大值|nomaxvalue][minvalue 最小值|nominva lue][cycle|nocuyle][cache 数目|nocache][order|noorder]。
具体代码示例如下:
创建表
create table book(
bookId varchar2(4) primary key,
name varchar2(20)
);
创建序列
create sequence book_seq start with 1 increment by 1;
创建触发器
create or replace trigger book_trigger
before insert on book
for each row
begin
select book_seq.nextval into :new.bookId from dual;
end ;
添加数据
insert into book(name) values ('cc');
insert into book(name) values ('dd');
commit;
扩展资料:
在数据表中,有时候需要主键值自动增加,但在Oracle数据库中,没有象Mysql的Autoincrement一样自动增长的数据类型。在实现Oracle数据库字段自增功能时,利用DML触发器来完成。
触发器(trigger)是一些过程,当发生一个特定的数据库事件时就执行这些过程,可以使用触发器扩充引用的完整性。DML即数据操纵语言,用于让用户或程序员使用,实现对数据库中数据的操作。基本的数据操作分成两类四种:检索(查询)和更新(插入、删除、修改)。
触发器类似于函数和过程,其在数据库中以独立身分存在。触发事件可以是对数据库表的DML(insert、update或delete)操作等。
创建表结构:
向表中添加主键约束
向表中添加Sequences
添加字段的语法:
修改字段的语法:
删除字段的语法:
添加、修改、删除多列的话,用逗号隔开。
--创建序列的语法 --
CREATE SEQUENCE SEQ_POS_ORDER_ONLINE_ID
INCREMENT BY 1
START WITH 1000000000000042 -- 从1开始计数 或 MINVALUE 1 或 NOMINVALUE --的设置最小值 不设置最小值
NOMAXvalue -- 不设置最大值 或 MAXVALUE 10 --设置最大值 10
NOCYCLE -- 一直累加,不循环 或
CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE
提示设置:tools--preferences--userinterface--codeassistant--在右边选中authomaticallyactivated即可快捷键设置设置方法:菜单Tools--Preferences--Editor--AutoReplace.--Edit如:s+空格键=select*from
示例脚本:
-- Create table
create table Test
(
c_time date default sysdate not null,
m_time date not null,
opt_key varchar2(20),
opt_name varchar2(20)
)
tablespace SYSTEM
storage
(
initial 64K
minextents 1
maxextents unlimited
);
-- Add comments to the table
comment on table Test
is '系统选项表';
-- Add comments to the columns
comment on column Test.c_time
is '记录创建时间';
comment on column Test.m_time
is '记录修改时间';
-- Create/Recreate primary, unique and foreign key constraints
alter table Test
add constraint opt_code_UNIQUE primary key (OPT_KEY, OPT_NAME);
登陆plsql ---点开左侧的table,右键,新建 即可 ,在新建表的中,右下角有个“查看SQL“的按钮,可以看到脚本
触发器是一种特殊的存储过程 下面是触发器的详细说明
ORACLE 触发器
ORACLE产生数据库触发器的语法为
create [or replace] trigger 触发器名 触发时间 触发事件
on 表名
[for each row]
pl/sql 语句
其中
触发器名 触发器对象的名称 由于触发器是数据库自动执行 的 因此该名称只是一个名称 没有实质的用途
触发时间 指明触发器何时执行 该值可取
before 表示在数据库动作之前触发器执行
after 表示在数据库动作之后出发器执行
触发事件 指明哪些数据库动作会触发此触发器
insert 数据库插入会触发此触发器
update 数据库修改会触发此触发器
delete 数据库删除会触发此触发器
表 名 数据库触发器所在的表
for each row 对表的每一行触发器执行一次 如果没有这一选项 则只对整个表执行一次
举例 下面的触发器在更新表auths之前触发 目的是不允许在周末修改表
create trigger auth_secure
before insert or update or delete file://对整表更新前触发
on auths
begin
if(to_char(sysdate DY )= SUN
RAISE_APPLICATION_ERROR( 不能在周末修改表auths );
( RAISE_APPLICATION_ERROR是函数 括弧内的 第一参数范围在 ~ 之间 第二个
参数是字符串 大小在 k 超过的话 系统自动截断)
end if;
lishixinzhi/Article/program/Oracle/201311/17609