Oracle 跨用户表间数据操作(触发器实现)

简介: 需求:     用户hfxcroad中有一个表P_TABLE,创建表语句如下:    create table P_TABLE    (        ID varchar2(50) de...

需求:

     用户hfxcroad中有一个表P_TABLE,创建表语句如下:

    create table P_TABLE
    (
        ID varchar2(50) default SYS_GUID(),
        NC varchar2(50)
    );

    用户fdfxkh中有一个表P_TABLE,创建语句如下:

   create table P_TABLE
   (
       ID varchar2(50) default SYS_GUID(),
       NC varchar2(50),
       V numeric(4)
   );

   当我们在用户fdfxkh的P_TABLE中插入数据,并且V字段值大于15时,向用户hfxcroad的P_TABLE表中插入NC值,模拟由实时数据表产生预警信息表,我们该怎么做?


解决方案:

1、由于是跨用户操作数据,所以第一步我们要将用户hfxcroad中的表P_TABLE的权限授权给fdfxkh用户。

     在用户hfxcroad下执行以下授权SQL:

    GRANT ALTER ON  hfxcroad.P_TABLE TO fdfxkh;

    GRANT DELETE ON  hfxcroad.P_TABLE TO fdfxkh;

    GRANT INDEX ON  hfxcroad.P_TABLE TO fdfxkh;

    GRANT INSERT ON  hfxcroad.P_TABLE TO fdfxkh;

    GRANT REFERENCES ON  hfxcroad.P_TABLE TO fdfxkh;

    GRANT SELECT ON   hfxcroad.P_TABLE TO fdfxkh;

    GRANT UPDATE ON   hfxcroad.P_TABLE TO fdfxkh;


2、在用户fdfxkh中创建after插入触发器,如下:

    create or replace trigger tr_Warn
    after insert on fdfxkh.P_TABLE
    for each row
    begin
          if :new.V > 15 then
              insert into hfxcroad.P_TABLE(NC) values(:new.NC);
         end if;
    end;


3、在用户fdfxkh中执行插入语句:

    insert into P_TABLE(NC,V) values('20141203',25);

   

4、到用户hfxcroad中执行查找语句:

    select * from P_TABLE;

   会看到刚才满足条件后的记录。




相关文章
|
9月前
|
存储 Oracle 关系型数据库
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
在YMP校验过程中,从yashandb同步至Oracle的数据出现timestamp(0)字段不一致问题。原因是yashandb的timestamp(x)存储为固定6位小数,而Oracle的timestamp(0)无小数位,同步时会截断yashandb的6位小数,导致数据差异。受影响版本:yashandb 23.2.7.101、YMP 23.3.1.3、YDS联调版本。此问题会导致YMP校验数据内容不一致。
|
10月前
|
Oracle 关系型数据库 Linux
【YashanDB 知识库】通过 dblink 查询 Oracle 数据时报 YAS-07301 异常
客户在使用 YashanDB 通过 yasql 查询 Oracle 数据时,遇到 `YAS-07301 external module timeout` 异常,导致 dblink 功能无法正常使用,影响所有 YashanDB 版本。原因是操作系统资源紧张,无法 fork 新子进程。解决方法包括释放内存、停掉不必要的进程或增大进程数上限。分析发现异常源于 system() 函数调用失败,返回 -1,通常是因为 fork() 失败。未来 YashanDB 将优化日志信息以更好地诊断类似问题。
|
9月前
|
Oracle 关系型数据库 Java
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
本文介绍通过Flink CDC实现Oracle数据实时同步至崖山数据库(YashanDB)的方法,支持全量与增量同步,并涵盖新增、修改和删除的DML操作。内容包括环境准备(如JDK、Flink版本等)、Oracle日志归档启用、用户权限配置、增量日志记录设置、元数据迁移、Flink安装与配置、生成Flink SQL文件、Streampark部署,以及创建和启动实时同步任务的具体步骤。适合需要跨数据库实时同步方案的技术人员参考。
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
|
9月前
|
存储 Oracle 关系型数据库
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
|
10月前
|
SQL
【YashanDB 知识库】通过触发器复制 varchar(4000 char) 列的数据导致乱码
**问题简介:** 客户在使用触发器将表 A 中 varchar(4000 char) 列的数据复制到表 B 时,发现表 B 中的数据出现乱码且与表 A 不一致。此问题影响所有 YashanDB 版本,原因是 YashanDB 在处理触发器场景下的大长度 varchar 数据复制时存在机制错误。为避免该问题,建议将列长度修改为 varchar(2000 char) 或更小。数据正确性无法保证,需谨慎处理。 **验证方法:** 可通过创建表 A 和 B 及相应触发器进行测试。
【YashanDB 知识库】通过触发器复制 varchar(4000 char) 列的数据导致乱码
|
9月前
|
Oracle 关系型数据库 Linux
【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常
【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常
|
SQL 运维 Oracle
【迁移秘籍揭晓】ADB如何助你一臂之力,轻松玩转Oracle至ADB的数据大转移?
【8月更文挑战第27天】ADB(Autonomous Database)是由甲骨文公司推出的自动化的数据库服务,它极大简化了数据库的运维工作。在从传统Oracle数据库升级至ADB的过程中,数据迁移至关重要。
277 0
|
10月前
|
Oracle 关系型数据库 Linux
【YashanDB 知识库】通过 dblink 查询 Oracle 数据时报 YAS-07301 异常
某客户在使用 YashanDB 通过 yasql 查询 Oracle 数据时,遇到 `YAS-07301 external module timeout` 异常,导致 dblink 功能无法正常使用,影响所有版本。问题源于操作系统资源紧张,无法 fork 新子进程。解决方法包括释放内存、停掉不必要的进程或增大进程数上限。分析发现异常原因为系统调用 fork() 失败。经验总结:优化日志记录,提供更多异常信息。
|
9月前
|
存储 Oracle 关系型数据库
【YashanDB知识库】YMP校验从yashandb同步到oracle的数据时,字段timestamp(0)出现不一致
【YashanDB知识库】YMP校验从yashandb同步到oracle的数据时,字段timestamp(0)出现不一致
|
9月前
|
SQL
【YashanDB知识库】通过触发器复制varchar(4000 char)列的数据导致乱码
【YashanDB知识库】通过触发器复制varchar(4000 char)列的数据导致乱码

推荐镜像

更多