读书人

关于触发器的有关问题

发布时间: 2012-03-08 13:30:13 作者: rapoo

关于触发器的问题。
各位大侠,国庆快乐。

小弟现在想做一个触发器,在数据插入表的时候,先判断表中是否有该数据,如果有的话,则把INSERT语句,改为UPDATE。可以这样做吗?哪位大侠能给个示例?小弟先谢过了。

[解决办法]
没有必要写触发器吧,参考

SQL code
delete from tb where id = @id;insert into tb (...) values (...);
[解决办法]
oracle 有merge语句可以实现你的要求
没有该行数据则插入,有该行数据则更新
[解决办法]
探讨
oracle 有merge语句可以实现你的要求
没有该行数据则插入,有该行数据则更新

[解决办法]
直接在触发器中判断就行了
[解决办法]
create or replace trigger AK on tablename before insert
is
var1 tabename.column%type;----关键字来判断记录是否存在
var2 tablename%rowtype;----如果存在则把插入的数据放在记录中,修改数据时仍要用
varflag number;---标示是否表中已经存在
begin
select 关键字 into var form :new;---得到插入数据的关键字
select n.* into var2 from :new--得到插入数据
select nvl(max(1),0) into varflag from tablename where tablename.column=关键字;--判断表中存在
if varflag=1 then
update tablename set tablename.columns=var2 where tablename.column=关键字;修改表中存在的数据行
end if
end
[解决办法]
顶2楼,题外话(我觉得这个需求应该在应用层面实现,当然如果你的数据库环境非常牛x,资源多的浪费,你可以考虑在触发器里面实现)。

读书人网 >oracle

热点推荐