首先创建学生表:

--创建学生表
CREATE TABLE students(
  name varchar2(12),
  birthday date,
  age number,
  sales number);

然后我们创建触发器,当往学生表中插入数据,就触发另一个操作(这里我们打印出插入的数据)

对应的触发器代码如下:

--创建与students关联的触发器
CREATE OR REPLACE TRIGGER trg_stu_insert
AFTER INSERT ON students
FOR EACH ROW
DECLARE 
 BEGIN
   dbms_output.put_line('Name:'||:new.name);
   dbms_output.put_line('Birthday:'||:new.birthday);
   dbms_output.put_line('Age:'||:new.age);
   dbms_output.put_line('Sales:'||:new.sales);
   dbms_output.put_line('触发器已经执行成功');
   dbms_output.put_line('触发器已经执行成功');
  END trg_stu_insert;

这里 :new 对象表示了插入的记录,可以通过:new.columnName来引用记录的每个字段值

注意这里用到了:dbms_output.put_line()函数,所以在执行的时候我们需要打开这个输出函数,所以事先执行:

set serveroutput on;

好了,这样我们在插入一条数据的时候就会打印出插入的信息。

INSERT INTO students values('Jim',sysdate,23,12341);

最终执行的效果:

红色部分就是触发器执行的内容,当然这触发器的内的操作可以由你自己决定。

当如果是insert和update均触发的情况,可以这么写:(只需要用or连接)

--如果是插入(insert)和更新(update)都触发的情况
CREATE OR REPLACE TRIGGER trg_stu_Insert_Update
AFTER INSERT OR UPDATE ON students
FOR EACH ROW
  DECLARE 
  BEGIN
    dbms_output.put_line('触发器插入和更新已经执行成功');
    END trg_stu_Insert_Update;

再加删除的话,可以添加:

CREATE OR REPLACE TRIGGER trg_stu_DDL
AFTER INSERT OR UPDATE OR DELETE ON students
FOR EACH ROW
  DECLARE 
  BEGIN
    dbms_output.put_line('触发器插入和更新以及删除已经执行成功');
    END trg_stu_DDL;

优质内容筛选与推荐>>
1、Ted当心网上“过滤气泡”
2、mysqldump 导出数据库为DBname的表名为Tname的表结构 导出数据库的所有表的表结构
3、【设计模式】适配器模式
4、mov和ldr/str的区别
5、Socket编程(连接、发送消息)(Tcp、Udp)


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn