如何在触发器中使用序列?

极品司机 2003-05-26 10:44:08
如何在触发器中使用序列?

1 表players:

SQL> desc players
名称 是否为空? 类型
----------------------------------------- -------- ----------------------------
ID NOT NULL NUMBER(3)
NAME VARCHAR2(10)
COLOR VARCHAR2(10)
REMARK VARCHAR2(40)


2 序列s_players_id:

SQL> create sequence s_players_id increment by 1 start with 1 maxvalue 999;

序列已创建。

3 触发器t_players:

create or replace trigger t_players
before insert on players
referencing old as old new as new for each row
begin
new.id=s_players_id.nextval;
end;

在iSqlPlus下执行后提示:
警告: 创建的触发器带有编译错误。

在OMS中编译t_players时提示:
行号= 2 列号= 7 错误文本= PLS-00103: 出现符号 "="在需要下列之一时: := . ( @ % ;
行号= 3 列号= 1 错误文本= PLS-00103: 出现符号 "END"

如何解决?
...全文
101 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
极品司机 2003-05-26
  • 打赏
  • 举报
回复
begin
select s_players_id.nextval into new.id from dual;
end;
在OMS中编译时提示:

行号= 2 列号= 34 错误文本= PLS-00201: 必须说明标识符 'NEW.ID'
行号= 2 列号= 41 错误文本= PL/SQL: ORA-00904: : 无效的标识符
行号= 2 列号= 1 错误文本= PL/SQL: SQL Statement ignored
bzszp 2003-05-26
  • 打赏
  • 举报
回复
select s_players_id.nextval into new.id from dual;
Michaelyfj 2003-05-26
  • 打赏
  • 举报
回复
insert into players(id, ...)
values(s_players_id.nextval, ...);
smilefeng 2003-05-26
  • 打赏
  • 举报
回复
BEGIN
select s_players_id.nextval into :new.ID from dual;
END;

17,377

社区成员

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

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