帮忙看一下这个触发器,谢谢

onlygirl2006 2007-02-14 10:31:27
在sql server里是正确的,即插入或更新表TTG_Account时,也要对TTG_Customer 进行更新,改称oracle触发器后,更新TTG_Account时更新了TTG_Customer,这是正确的,但是插入TTG_Account时,并没有插入TTG_Customer

这个触发器怎么调试阿?

Create Trigger TRG_TTG_Account_Insert_Customer
ON TTG_Account
After Insert,Update
As
Declare @CustomerNoNew varchar(6),@CustomerNoOld varchar(6)

If Update (AccountID)
Begin
select @CustomerNoOld=AccountID from deleted
select @CustomerNoNew=AccountID from inserted

If Not Exists (select CustomerID from TTG_Customer where CustomerNO=@CustomerNoOld)
Begin
Insert into TTG_Customer (CustomerNO) Values (@CustomerNoNew)
End
Else
Begin
Update TTG_Customer Set CustomerNO=@CustomerNoNew where CustomerNO=@CustomerNoOld

End

End

-------------------------------------------------------------------
一下是oracle触发器

Create Or Replace Trigger TR_TTG_Account_Insert_Customer
After Insert or Update
ON TTG_Account
FOR EACH ROW
Declare
v_CustomerNoNew varchar2(6);
v_CustomerNoOld varchar2(6);
v_CustomerID number(10,0);

Begin

v_CustomerNoOld:=:OLD.AccountID;
v_CustomerNoNew:=:NEW.AccountID;
IF (v_CustomerNoOld<>v_CustomerNoNEW) THEN
select CustomerID into v_CustomerID from TTG_Customer where CustomerNO=:OLD.AccountID;
IF v_CustomerID is null THEN
Insert into TTG_Customer (CustomerNO) Values (:NEW.AccountID);
ELSE
UPDATE TTG_Customer Set CustomerNO=:NEW.AccountID where CustomerNO=:OLD.AccountID;
END IF;
END IF;
End TR_TTG_Account_Insert_Customer;
...全文
189 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
onlygirl2006 2007-02-14
  • 打赏
  • 举报
回复
真是太感谢了,你们会万福的^_^

新年快乐哦
zzffhh 2007-02-14
  • 打赏
  • 举报
回复
就是楼上说的判断。
多壮志 2007-02-14
  • 打赏
  • 举报
回复
语法不存在错误,但是判断是插入还是update,请使用
IF INSERTING
IF UPDATING
来处理.
onlygirl2006 2007-02-14
  • 打赏
  • 举报
回复
oracle触发器已经通过编译了的

17,377

社区成员

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

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