针对Oracle:不同触发器类型及其应用(oracle触发器类型)
Oracle数据库提供几种不同的触发器类型,这些类型的触发器的形式和功能各不相同,但它们都可以帮助我们执行特定的任务。
常见的触发器类型有Insert 触发器,Update触发器,Delete触发器,等等。
Insert触发器是当在表中插入新行数据时调用的触发器,可以使用此类触发器来检查新插入的数据是否符合特定的条件,如果不满足这些条件,则可以拒绝操作。
例如,如果有一个表只允许插入具有唯一ID的行,那么可以创建一个Insert触发器来检查插入的行是否已经包含了一个唯一的ID,如果不是,则拒绝这个操作:
Create Trigger trg_InsID
Before Insert On table1
For Each Row
Begin
If :new.ID IS NOT NULL
Then
Raise_Application_Error(-20001,’Duplicate ID’);
End If;
End;
/
Update触发器用于当更新表时调用,它可以检查更新操作是否合法,并在它发生之前或之后更新其他表。例如,如果你有一个表,只有特定的应用程序用户可以更新它中的记录,你可以创建一个更新触发器来检查更新操作是否来自授权用户:
Create Trigger trg_UpdUser
Before Update Of Firstname,Lastname On table1
Begin
If :old.UpdUser IS NOT NULL
Then
If :new.UpdUser :old.UpdUser
Then
Raise_Application_Error(-20001,’Unauthorized Access’);
End If;
End If;
End;
/
Delete触发器用于当从表中删除行时调用,它可以检查要删除的行是否合法,也可以在删除之前或之后处理其他表中的影响。例如,历史记录表可能只允许有效记录更新,而不能被删除,但可以有一个Delete触发器来检查要删除的记录是否过去是有效的:
Create Trigger trg_DelRec
Before Delete On table1
For each row
Begin
If :old.Status ‘Valid’ Then
Raise_Application_Error(-20001,’Cannot Delete Invalid Records’);
End If;
End;
/
当然,还有其他一些触发器,比如After Trigger,触发器等,它们使用方法与上述Insert,Update,Delete触发器大致类似,但具有明显的不同。这些触发器可以帮助我们更有效地处理数据库操作。