一个看似简单的小问题

wby8888 2005-03-04 03:20:29
有三个结构一样的表T1,T2,T3,结构如下
n1 (int) c1(varchar)
其中c1为这三个表主键,我要实现的功能是
先向T2中插入一条数据(n1=2,c1='a')
然后从T1中选出c1='a'(就是与刚插入T2中的那条记录的c1相等)的记录(T1中肯定有这么一条记录)
然后用T1.n1-T2.n1=T3.n1,并把T3.n1与c1='a'插入到T3中.
eg:
T1中有一条记录(n1=10,c1='a'),然后当
insert into T2(n1,c1) values(2,'a');
就是我想要实现的就是
{
insert into T3(n1,c1) values((select n1 from T1 where c='a')-2,'a');
}
最后结果就是T3中会有一条记录(n1=8,c1='a')
这个看起来很简单,但是我自己写了一个存储过程,不好使.
用触发器做,也不行.我觉得好像不是看起来那么简单.
请大家帮我解决一下.








...全文
124 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wby8888 2005-03-07
  • 打赏
  • 举报
回复
多谢!
coolroy2000 2005-03-04
  • 打赏
  • 举报
回复
同上
insert into t3(n1,c1) select n1-:new.n1,:new.c1 from t1 where c1=:new.c1;
skystar99047 2005-03-04
  • 打赏
  • 举报
回复
create or replace trigger trg
before insert on t2
for each row
begin
insert into t3(n1,c1) select n1-:new.n1,:new.c1 from t1 where c1=:new.c1;
end;
/
yxxx 2005-03-04
  • 打赏
  • 举报
回复
应该可以实现楼主的要求了
yxxx 2005-03-04
  • 打赏
  • 举报
回复
Create Or Replace Trigger testinsert
Before Insert On t2
For Each Row
Begin
insert into t3(n1,c1) select n1-:New.n1,c1 from t1 where c1=:new.c1;
End testinsert;
bzszp 2005-03-04
  • 打赏
  • 举报
回复
sorry!
create or replace trigger trg_t2
before insert on t2
for each row
begin
insert into t3(n1,c1) select n1-:new.n1,c1 from t1 where c1=:new.c1;
end trg_t2;
/
bzszp 2005-03-04
  • 打赏
  • 举报
回复
try:

create or replace trigger trg_t2
before insert on t2
for each row
begin
insert into t3(n1,c1) select n1,c1 from t1 where c1=:new.c1;
end trg_t2;
/

17,377

社区成员

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

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