tiankeyi 2022-07-18 16:26 采纳率: 78.6%
浏览 115
已结题

oracle 触发器创建

oracle创建一个触发器,有一张表结构如下

img

我想求的是如果插入一条新数据,dept_name为南京,不插入dept_code 的情况下,根据dept_name,给他加上320110
用触发器做,每插入一行执行一次
代码如下
create table ceshi (id number,name VARCHAR2(50),dept_name VARCHAR2(50),dept_code VARCHAR2(50))
insert into ceshi values(1,'zhangsan','北京','110000');
insert into ceshi values(2,'zhangsan','上海','310000');
insert into ceshi values(3,'zhangsan','南京','320100');
insert into ceshi values(4,'zhangsan','深圳','440300');
insert into ceshi values(5,'zhangsan','广州','440100');
commit;
select * from ceshi

  • 写回答

2条回答 默认 最新

  • 心寒丶 全栈领域优质创作者 2022-07-18 17:05
    关注

    create or replace trigger TRI_testnotnull
    before insert on ceshi
    for each row
    declare
    v_dept varchar2(50);

    PRAGMA AUTONOMOUS_TRANSACTION;
    begin
    select a.dept_code into v_dept from ceshi a where a.dept_name='南京';
    if :new.dept_code is null
    then
    :new.dept_code:=v_dept;

    end if;
    end TRI_testnotnull;

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • tiankeyi 2022-07-18 17:39
    关注

    这样可以求出来,但是容易锁表,如果说把id和dept_code拿出来到一张新表中insert该如何写呢,新表中只有两个字段
    create ceshi1 (idvarchar2(200),dept_code varchar2(50))

    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月26日
  • 已采纳回答 7月18日
  • 修改了问题 7月18日
  • 创建了问题 7月18日

悬赏问题

  • ¥15 PCL注册的选点等函数如何取消注册
  • ¥15 问一下各位,为什么我用蓝牙直接发送模拟输入的数据,接收端显示乱码呢,米思齐软件上usb串口显示正常的字符串呢?
  • ¥15 Python爬虫程序
  • ¥15 crypto 这种的应该怎么找flag?
  • ¥15 代码已写好,求帮我指出错误,有偿!
  • ¥15 matlab+波形匹配算法
  • ¥15 转录组分析做聚类树图时癌旁组被分到了癌组
  • ¥15 大一Python字典
  • ¥15 multisim电路设计(相关搜索:设计报告)
  • ¥15 PC-lint Plus