oracle 的组件是不能如 mysql 一样设置 autoincrement 的自增条件的,因此使用序列和触发器操作是主键自增
-- 创建序列
create sequence t_comb_match_info_seq start with 1 increment by 1;
--创建触发器
create or replace trigger t_comb_match_info_trigger before insert on t_comb_match_info
for each row
begin
select t_comb_match_info_seq.nextval into :new.id from dual;
end;
触发器的使用
create or replace trigger 名字
before|after
insert|delete|update
on 表名
for each row
begin
sql 语句 ; -- 必须要加分号结束sql语句。
end;
– 结合序列完成表中字段的值自动增加
create or replace trigger t1
before
insert
on ta
for each row – :对于每行数据都会触发该触发器
begin
– :new 新添加到数据库的当前这条数据记录
– :old 要删除或者修改的原数据
– :new.字段 新添加到数据库的当前这条数据中的指定字段
:new.id := s5.nextval; – := 赋值操作
end;
create or replace trigger t2
before
delete or update
on ta
for each row
begin
insert into copyta values(:old.id,:old.name,:old.hir);
end;
– :old 表示的是数据库中原有的数据
– 删除触发器
drop trigger t4;
– sql编程中不能书写 双引号
create or replace trigger t4
before
update or delete
on ta
for each row
begin
if (to_char(sysdate,’DY’)in (‘星期六’,’星期日’))
or (to_char(sysdate,’HH24:MI’) not between ‘09:00’ and ‘18:00’)
then –注意’09:00’中9前面的0不能省略,否则和转换后的日期字符串不匹配
raise_application_error(-20001,’这个时间段是不能修改表信息的’);
end if;
end;
– raise_application_error() oracle中自定义异常的函数
select * from ta;