求助

chuanshuo1935597491 2013-05-08 04:04:40
本人是初学者
oracle,一张表,有一个字段比如产品库存(pkucun),另外一个字段产品数量(pnum),
当插入一条记录时,
insert into test (pnum,pname)valuse(20,'pp'),
字段pkucun通过字段pnum计算而自动实现的,
求助高人指点,这个sql语句该怎么写,急件!
...全文
159 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
终于解决了,谢谢。
  • 打赏
  • 举报
回复
我用的是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
  • 打赏
  • 举报
回复
恩,做个触发器,当数量加的时候,也把库存的数量加上数量
u010412956 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具体应用怎样

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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