oracle触发器问题,怎么把insert,update,insert 写入同一触发器,参考下面的触发器代码!跪谢。。。

利用的databaselink准备实现异地数据库数据同步,TEST_STURECORD@DBLINKTEST为异地数据库名称。本地和异地的数据库结构完全相同。表结构:cr... 利用的database link准备实现异地数据库数据同步,
TEST_STURECORD@DBLINKTEST 为异地数据库名称。
本地和异地的数据库结构完全相同。

表结构:
create table TEST_STURECORD
(
STUR_ID INTEGER not null,
STU_UNP_ID INTEGER not null,
STUR_STIME VARCHAR2(20),
STUR_WHERE VARCHAR2(100) not null,
STUR_WORK VARCHAR2(50),
STUR_FTIME VARCHAR2(20)
)
触发器:
create or replace trigger updatedb_TEST_STURECORD
before update on TEST_STURECORD
for each row
begin
update TEST_STURECORD@DBLINKTEST
set STUR_ID =:New.STUR_ID, stur_where=:New.stur_where;
end;

求高手解答,跪谢#11
-=====================================================================
触发器完整代码
create or replace trigger updatedb_TEST_STURECORD
before insert or update or delete on TEST_STURECORD
for each row
begin
if updating then
update TEST_STURECORD@DBLINKTEST
set STUR_ID =:New.STUR_ID, stur_where=:New.stur_where;
end if;
if inserting then
insert into TEST_STURECORD@DBLINKTEST(STUR_ID,STU_UNP_ID,STUR_STIME,stur_where,STUR_WORK,STUR_FTIME)
values (:New.STUR_ID,:New.STU_UNP_ID,:New.STUR_STIME,:New.stur_where,:New.STUR_WORK,:New.STUR_FTIME);
end if;
if deleting then
delete from TEST_STURECORD@DBLINKTEST where STUR_ID=:New.STUR_ID;
end if;
end;
======================================================================
展开
 我来答
gold0717
2011-09-07 · TA获得超过437个赞
知道答主
回答量:79
采纳率:0%
帮助的人:57.3万
展开全部
你是要把插入和更新放到一个触发器里面对吗?

这么写就行了:
create or replace trigger updatedb_TEST_STURECORD
before insert or update on TEST_STURECORD
for each row
begin

if inserting then
update TEST_STURECORD@DBLINKTEST
set STUR_ID =:New.STUR_ID, stur_where=:New.stur_where;
end if;

if updating then
insert TEST_STURECORD@DBLINKTEST values (xx,xxx,xx,xx,xx);
end if;

end;

插入和更新内的代码你改成你自己需要的就行了。希望对你有帮助。
更多追问追答
追问
麻烦问下, insert  into TEST_STURECORD@DBLINKTEST values (xx,xxx,xx,xx,xx);
xx参数如何写? New.字段? 第一次接触oracle,谅解。
追答
对呀,你更新都会写插入咋就不会了呢。。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cbf9697
2011-09-07 · 超过17用户采纳过TA的回答
知道答主
回答量:52
采纳率:0%
帮助的人:45.1万
展开全部
在设定更新时触发的地方! 把插入也加上!
这样这个触发器不管在更新和插入的时候都会触发!
更多追问追答
追问
求代码!跪谢
追答
在sqlserver中比较简单!在Oracle中这样写会变得麻烦!在允许的情况下建议分开写!
以下是我按照你写的写的代码:仅供参考

create or replace trigger updatedb_TEST_STURECORD
before insert,update on TEST_STURECORD
for each row
begin
if inserting then
insert TEST_STURECORD@DBLINKTEST values (xx,xxx,xx,xx,xx);
end if;
if updating then
update TEST_STURECORD@DBLINKTEST
set STUR_ID =:New.STUR_ID, stur_where=:New.stur_where;end if;

end;
go
因为要同步数据! 所以本地数据库添加时异地数据也要添加! 添加的数据就是本地添加的数据
更新也是一样!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-09-07
展开全部
不好意思,路过,打个酱油,当我没来过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
忠钥述7410
2011-09-07 · TA获得超过5.6万个赞
知道大有可为答主
回答量:3.2万
采纳率:0%
帮助的人:4150万
展开全部
不会,谢谢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
minxiaoxiang
2011-09-07 · 超过39用户采纳过TA的回答
知道答主
回答量:165
采纳率:100%
帮助的人:115万
展开全部
变通啊,你会写insert那么update也可以啊,触发条件改啊
更多追问追答
追问
if deleting then
delete from TEST_STURECORD@DBLINKTEST where STUR_ID =:New.STUR_ID;
end if;
insert 和 update都可以了,

执行:
delete from TEST_STURECORD where STUR_ID=2;
commit;
delete怎么不执行呢?只把A服务器中一条记录删了,B服务器的还在。。怎么回事?
追答
把你现在的所有sql语句贴出来给你看看
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式