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;
====================================================================== 展开
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;
====================================================================== 展开
5个回答
展开全部
你是要把插入和更新放到一个触发器里面对吗?
这么写就行了:
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;
插入和更新内的代码你改成你自己需要的就行了。希望对你有帮助。
这么写就行了:
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,谅解。
追答
对呀,你更新都会写插入咋就不会了呢。。。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在设定更新时触发的地方! 把插入也加上!
这样这个触发器不管在更新和插入的时候都会触发!
这样这个触发器不管在更新和插入的时候都会触发!
更多追问追答
追问
求代码!跪谢
追答
在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
展开全部
不好意思,路过,打个酱油,当我没来过
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不会,谢谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
变通啊,你会写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语句贴出来给你看看
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询