oracle 触发器问题?

LILIJJJJ 2012-11-21 06:43:58
我编写了这样一段代码:
create table mytable
(
id varchar2(20) primary key,
name varchar2(20),
sex varchar2(2),
age number,
address varchar2(50)
)

select * from mytable;
--创建序列
create sequence se_id
start with 1
increment by 1

---主键的格式为:字母F+5位数字
--创建触发器构造主键格式
create or replace trigger tri_id
before insert on mytable
for each row
begin

select 'F'||lpad(se_id.nextval,5,0) into :new.id from dual;
--:new.id='F'||lpad(se_id.nextval,5,0);
end;

--插入数据
insert into mytable values('replace','李四','男',21,'沙坪坝');

但为什么赋值时只能 select 'F'||lpad(se_id.nextval,5,0) into :new.id from dual;这样查询赋值,而不能直接:new.id='F'||lpad(se_id.nextval,5,0);赋值????????
...全文
95 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fw0124 2012-11-22
  • 打赏
  • 举报
回复
改成 :new.id:='F'||lpad(se_id.nextval,5,0); 等号前面少了个:
wanglipo 2012-11-22
  • 打赏
  • 举报
回复
序列是并不是一个变量,需要取得下一个值是需要执行的,不可能直接赋值的 可以去看看序列的基础知识

17,377

社区成员

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

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