Oracle Trigger 多次触发失败

Oracle Trigger fails after several times it is triggerd

我有两个触发器。一个用于 UPDATE 和 INSERT 的触发器,一个用于 DELETE 的触发器。

create or replace
TRIGGER insup_trigger
BEFORE INSERT OR UPDATE ON USER_GROUPS
FOR EACH ROW
BEGIN
    UPDATE PROJECTS 
    SET TOUCHED = 1 
    WHERE ID IN (SELECT PJ_ID 
             FROM PROJECT_ROLES_GROUPS 
             WHERE GRP_ID = :NEW.GRP_ID);
END;

和删除触发器:

create or replace
TRIGGER MARK
BEFORE DELETE  ON USER_GROUPS
FOR EACH ROW
BEGIN
    UPDATE PROJECTS 
    SET TOUCHED = 1 
    WHERE ID IN (SELECT PJ_ID 
             FROM PROJECT_ROLES_GROUPS 
             WHERE GRP_ID = :OLD.GRP_ID);
END;

现在这些触发器可以正常工作几次,但之后就会抛出错误

  ORA-01013: user requested cancel of current operation
  ORA-06512: at "MARK", line 3
  ORA-04088: error during execution of trigger 'MARK'

通过手动插入和删除从 SQL 开发人员触发触发器不会触发错误,此错误出现在执行插入和删除的 .net 应用程序中。

我是不是漏掉了什么?

编辑:

阅读评论后我得到提示,问题可能出在 vb.net 代码中。我有:

adTrans = ADOCon.BeginTransaction()
adCMD = New OdbcCommand(vsSQL, ADOCon)
adCMD.Transaction = adTrans

        Try
            adCMD.ExecuteNonQuery()
            adTrans.Commit() <- here is the error it should be
            -> adCMD.Transaction.Commit()
        Return True
        Catch ex As Exception
            ' Try to rollback the transaction
            Try
                adTrans.Rollback()
                If vbSuppressOutput = False Then
                    MsgBox(ex.Message)
                End If

                System.Threading.Thread.Sleep(20)
            Catch
                ' Do nothing here; transaction is not active.
            End Try
            Return False
        End Try

所以我尝试使用修改后的代码,但我无法再重现该问题。 非常非常感谢您的评论!

题目编辑错误

正如评论所暗示的那样,问题是我没有提交与 SQL 开发人员完成的交易。

因此,使用 VB.net 应用程序完成的交易无法完成并产生了错误。