在Oracle中创建标识列,不同于SQL Server中的是,SQLServer中叫自动标识列entity,而Oracle中叫序列(Sequence)。
在Oracle中创建序列(Sequence)分为如下几步:
- 创建一个测试表
create table TB_TEST(
USERID number primary key,
USERNAEM varchar2(128)not null,
LOGNAME varchar2(128)not null,
LOGPASSWORD varchar2(128)not null,
DEPARTID number
);
- 创建一个序列(Sequence),针对主键USERID
create sequence SEQ_USERID --创建一个序列
minvalue 1 --该序列的最小值是1
start with 1 --从1开始递增
increment by 1 --每次递增1
nomaxvalue --没有最大值
nocache; --没有缓存
- 创建一个触发器(Trigger)
begin
execute immediate 'create or replace trigger Trigger_USERID '||
before insert on "TB_TEST" '||
for each row '||
begin '||
if inserting then '||
if :NEW."USERID" is null then '||
select SEQ_USERID.nextval into :NEW."USERID" from dual; '||
end if; '||
end if; '||
end;';
end; - 激活触发器(Enable Trigger)
alter table "SCOTT"."TB_TEST"enable all triggers; --SCOTT为当前登录的数据库管理员,TB_TEST为当前操作的表名
- 插入数据进行测试
insert into TB_TEST(USERNAME,LOGNAME,LOGPASSWORD,DEPARTID)values('Mr.Wang','admin','pwd',2);
------------测试成功