求助

chuanshuo1935597491 2013-05-08 04:04:40
本人是初学者
oracle,一张表,有一个字段比如产品库存(pkucun),另外一个字段产品数量(pnum),
当插入一条记录时,
insert into test (pnum,pname)valuse(20,'pp'),
字段pkucun通过字段pnum计算而自动实现的,
求助高人指点,这个sql语句该怎么写,急件!
...全文
125 8 点赞 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
终于解决了,谢谢。
  • 打赏
  • 举报
回复
我用的是10g,自己搞了半天也没弄出来, pkucun这个字段是通过pnum字段查询语句实现的, 自己太菜了!
  • 打赏
  • 举报
回复
陈字文 2013-05-09
2楼可行,可是触发器有先天性的不足.所以能少用就少用.当然在这个问题上是可以的. 3楼利用11G虚拟列 学习了
  • 打赏
  • 举报
回复
wushangjimo 2013-05-09
引用 楼主 chuanshuo1935597491 的回复:
本人是初学者 oracle,一张表,有一个字段比如产品库存(pkucun),另外一个字段产品数量(pnum), 当插入一条记录时, insert into test (pnum,pname)valuse(20,'pp'), 字段pkucun通过字段pnum计算而自动实现的, 求助高人指点,这个sql语句该怎么写,急件!
个人感觉楼主的逻辑有点儿问题,如果一个产品库存(pkucun)和产品在一张表的话,那么就是说它也应该是残品的一个字段,那么你添加的时候同时添加产品库存就行了。
  • 打赏
  • 举报
回复
cappuccinno 2013-05-09
恩,做个触发器,当数量加的时候,也把库存的数量加上数量
  • 打赏
  • 举报
回复
hh7yx 2013-05-08
你这个要求,完全可以用11g的新特性 虚拟列 把pkucun 设置为虚拟列。
CREATE TABLE test
(
  pnum     NUMBER, 
  pname   varchar2(10), 
  pkucun  GENERATED ALWAYS AS ( pnum + 100 ) VIRTUAL
);

insert into test (pnum,pname) values(20,'pp');
commit;

select * from test;
  • 打赏
  • 举报
回复
Iam太陽神 2013-05-08

drop table book;   
--创建表      
create table book(       
   bookId varchar2(4) primary key,   
   name varchar2(20)         
);   
--创建序列      
create sequence book_seq start with 1 increment by 1;    
  
--创建触发器      
create or replace trigger book_trigger       
before insert on book       
for each row       
begin       
select book_seq.nextval into :new.bookId from dual;      
end ;   
--添加数据      
insert into book(name)  values ('cc');    
insert into book(name)  values ('dd');   
  
commit;
不懂的话,请点击这里
  • 打赏
  • 举报
回复
vanjayhsu 2013-05-08
写触发器自动UPDATE就可以了吧。。。不知道LZ具体应用怎样
  • 打赏
  • 举报
回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2013-05-08 04:04
社区公告
暂无公告