新年刚来到就被分配了一个小任务:就是调试公共资源数据,但由于对方不是很熟悉数据表结构,所以给出的数据库设计的sql不是很完整,只能自己设置主键自动增长了。好了,废话不多说了,直接上代码。
一、创建表的时候直接设置主键为 sys_guid
create table pro(
pro0 varchar2(255),
pro1 varchar2(50),
pro2 varchar2(50),
pro_id raw(16) default sys_guid() primary key --主键 pro_id 设置为默认的sys_guid
);
下面开始测试了。
二、通过序列生成自动增长的i的
--1 建立数据库表 utr_pro:
create table UTR_PRO(
PRO_ID number(38) not null,
PRO_EXT0 VARCHAR2(255),
PRO_EXT1 VARCHAR2(50),
PRO_EXT2 VARCHAR2(50)
)
-- 把pro_id设为主键
alter table UTR_PRO add constraint PK_UTR_PRO primary key (PRO_ID);
--2)建立序列
drop sequence UTR_PRO_SEQ; --该序列如果存在就删除
create sequence UTR_PRO_SEQ --新建序列名称
minvalue 1 --最小值
maxvalue 999999999999999999 --最大值
start with 1 --初始值
increment by 1 --每次增加值
cache 20;
--3)建立触发器
drop trigger utr_pro_trig; --该触发器如果存在就删除
CREATE OR REPLACE TRIGGER "utr_pro_trig" --新建触发器名称
BEFORE INSERT ON utr_pro
REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
DECLARE
BEGIN
SELECT UTR_PRO_SEQ.NEXTVAL INTO :NEW.PRO_ID FROM DUAL;
END utr_pro_trig;
注意,如果在执行过程中出现 XX不存在,则直接执行下面的语句即可。
下面验证一下效果如何,
网友评论