数据库高手指点 写一个触发器(oracle)

写一个触发器实现对表product(id,price)插入时如果对应的id存在就更新这条数据如果id不存在就插入这条数据... 写一个触发器 实现对表product (id,price)插入时 如果对应的id存在 就更新这条数据

如果id不存在 就插入这条数据
展开
 我来答
DoubleSong2011
2012-11-06 · TA获得超过1万个赞
知道大有可为答主
回答量:856
采纳率:0%
帮助的人:726万
展开全部
create or replace trigger Tri_product_insert
before insert on product
for each row
declare
v_in number;
begin
v_in := 0;
select count(1) into v_in from product where id = :new.id;
if v_in <> 0 then
delete from product where id = :New.id;
end if;
end Tri_product_insert;

我测试了几下,可以的,原理是插入后,如果存在这个id,那么就删除这个id的所有数据,然后就插入了这条id的记录,就相当于更新了。

这里面是不能直接使用update来更新的。

希望可以帮助到你,望采纳。
gyogh
2012-11-06 · TA获得超过267个赞
知道小有建树答主
回答量:561
采纳率:33%
帮助的人:142万
展开全部
create or replace trigger tri before insert on table1 FOR EACH ROW
begin
declare a varchar(2)
select count(*) into a from table1 where id=:new.id
if a>0 then
rollback
else
end if;
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式