刚接触oracle新手问题关于触发器

水晶烟灰缸 2014-09-01 11:22:55


create table Dict_System"
(
ID NUMBER(4),
PID NUMBER(4),
NodeName VARCHAR(20),
PathName VARCHAR(200),
OrderIndex NUMBER(2),
IsEnable NUMBER(1)
)

序列

create sequence SEQ_DICT
minvalue 1
maxvalue 9999
start with 1
increment by 1
cache 20
order;

触发器

create or replace trigger Trig_Dict
before insert on dict_system
for each row
begin
select seq_dict.nextval into: new.id from dual;
end Trig_Dict;

执行

insert into dict_system (pid,nodename,pathname,orderindex,isenable) values ('0','系统设置','system','1','1');


执行就报错ora-03113,如果不加触发器和序列,手动输入id则正常,求解答
...全文
411 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
aoxuelingshuang 2015-02-11
  • 打赏
  • 举报
回复
begin与end之间的语句,select seq_dict.nextval into :new.id from dual; :new.id 表示一个变量,所以冒号应该放在这里
c_sdn_shang_bu_qi 2014-09-02
  • 打赏
  • 举报
回复
CREATE OR REPLACE TRIGGER Trig_Dict INSERT ON dict_system FOR EACH ROW when (NEW.id IS NULL) BEGIN SELECT seq_dict.nextval into:new.id FROM DUAL; END;
sych888 2014-09-02
  • 打赏
  • 举报
回复
直接用DEFAULT约束不就OK了?
cyberczar 2014-09-02
  • 打赏
  • 举报
回复
一个简单的问题,受教了
huangdh12 2014-09-01
  • 打赏
  • 举报
回复
create or replace trigger Trig_Dict before insert on dict_system for each row begin select seq_dict.nextval into :new.id from dual; --冒号位置错了 end Trig_Dict;
yiyongle 2014-09-01
  • 打赏
  • 举报
回复
触发器创建语句中的冒号应该在后面into :new.id ,下次你创建触发器时可以triggers下查看你建的触发器,若是有个红叉就表示创建没成功,右键编辑可以看到哪一步出错
yiyongle 2014-09-01
  • 打赏
  • 举报
回复
触发器创建语句中的冒号应该在后面into :new.id ,下次你创建触发器时可以triggers下查看你建的触发器,若是有个红叉就表示创建没成功,右键编辑可以看到哪一步出错

yiyongle 2014-09-01
  • 打赏
  • 举报
回复
触发器创建语句中的冒号应该在后面into :new.id ,下次你创建触发器时可以triggers下查看你建的触发器,若是有个红叉就表示创建没成功,右键编辑可以看到哪一步出错

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧