ORA-04084: 无法更改此触发器类型的新值

2024-03-06

我正在尝试打开 pl/sql 触发器,该触发器在故事更改时计算表中某些单元格的总数。这是代码:

  ALTER session SET nls_date_format='dd/mm/yyyy';

  CREATE OR REPLACE TRIGGER TOTAL
  AFTER UPDATE OR INSERT ON ORDER_ITEMS
  FOR EACH ROW
    DECLARE
temp  NUMBER;
today DATE;
  BEGIN
         temp:=(:NEW.item_price-:NEW.discount_amount)*:NEW.quantity;
         today := CURRENT_DATE;
        :NEW.TOTAL := temp;
          dbms_output.put_line('Updated on:' ||today || ' item number: ' ||:NEW.item_id|| 'order number:' ||:NEW.order_id|| 'total: ' ||:NEW.total);
  END;
  /
  show errors

  insert into order_items (ITEM_ID, ORDER_ID, PRODUCT_ID, ITEM_PRICE, discount_amount, QUANTITY)
  VALUES (13, 7, 3, 553, 209, 2);

我收到此错误:

  1. 00000 - “无法更改此触发器类型的新值” *原因:新的触发变量只能在前一行更改 插入或更新触发器。 *操作:更改触发器类型或删除变量引用。没有错误。已插入 1 行 更新日期:06/01/2016 商品编号:13order 数量:7 总计:

据我所知,问题是在触发器执行期间更新表,这是由对同一个表的更新引起的。


根据评论中的要求,我将评论作为答案。

您的问题是因为您尝试在值保留后更改值,请尝试将触发器更改为BEFORE as:

CREATE OR REPLACE TRIGGER TOTAL
  BEFORE UPDATE OR INSERT ON ORDER_ITEMS
  FOR EACH ROW
DECLARE
  temp  NUMBER;
  today DATE;
BEGIN
    temp:=(:NEW.item_price-:NEW.discount_amount)*:NEW.quantity;
    today := CURRENT_DATE;
    :NEW.TOTAL := temp;
    dbms_output.put_line('Updated on:' || today || ' item number: '
                           || :NEW.item_id || 'order number:' || :NEW.order_id 
                           || 'total: ' ||:NEW.total);
END;
/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ORA-04084: 无法更改此触发器类型的新值 的相关文章

  • mysql 触发器与 php 脚本

    我有下一个 mysql 触发器 DELIMITER CREATE TRIGGER Test Insert BEFORE INSERT ON sat clientLocation FOR EACH ROW BEGIN DECLARE cmd
  • 尝试在 Oracle 11.2.0.2.0(64 位)中获取连接时出现 java.lang.ArithmeticException

    我目前正在 Oracle 中使用 Java 存储过程 并且在尝试在 Java 代码中获取连接时看到一些奇怪的行为 我的Java被打包成jar文件 然后使用以下命令部署到Oracle中loadjava命令行实用程序 Apackage然后在数据
  • 使用 createNativeQuery 调用 Oracle 存储过程

    我需要使用 JPA 调用存储过程并找到这篇文章 http www oracle com technology pub articles vasiliev jpql html http www oracle com technology pu
  • Oracle中如何检测4字节UTF8字符

    我们已经看到oracle中存储了4字节的UTF 8字符 我们需要检测特定列中有多少行包含此类字符 尝试了这里给出的建议 UTF 16 补充字符 https stackoverflow com questions 34720830 how t
  • 递归 SQL 给出 ORA-01790

    使用 Oracle 11g 第 2 版 以下查询给出 ORA 01790 表达式必须与相应表达式具有相同的数据类型 with intervals time interval AS select trunc systimestamp from
  • Oracle 9i:同义词表不存在?

    我创建了一个包 其中包含一个存储过程 我计划从单独的应用程序调用该存储过程 存储过程将返回架构中所有视图和表的排序列表 为此 它对 DBA TABLES 和 DBA VIEWS 同义词执行简单的选择 如下所示 CREATE OR REPLA
  • TOAD 将 &String 视为绑定变量

    我正在使用 Oracle Data Integrator 开发一些 ETL 有时会使用 TOAD 测试部分代码 今天我遇到了 TOAD 的问题 我有一行像 AND column value like DEV PROD 当我尝试运行包含上面过
  • T-SQL:如何使用 SELECT 创建表?

    在 oracle 中 您可以发出 create table foo as select from bar 等效的 T SQL 语句是什么 您可以使用SELECT INTO http msdn microsoft com en us libr
  • FROM 子句中的嵌套括号是否有效的 Oracle SQL 语法?

    此查询使用正确的 Oracle 语法吗 select from dual a where a dummy X 它可以在 11g 和 12c 中运行 但它是真正有效的语法吗 或者这只是一个编译器 错误 将来可能会修复 导致代码失败 我怀疑这是
  • 如何在Oracle中使用Timestamp_to_scn和Scn_to_timestamp?

    我的查询结果是这样的 select cast to date a start time mm dd yyyy hh mi ss pm as timestamp date of call ora rowscn from calling tab
  • REgex从oracle中的字符串中获取数字

    我有以下格式的字符串 阿克拉姆 88 jamesstree 20140418 阿克兰 8 约翰街 20140418 阿克兰 888 johnstreet 20140418 现在我只想检索 88 8 和 888 值 我为此编写了以下查询 SU
  • Oracle TDE 能否保护数据免受 DBA 的侵害?

    甲骨文专家 我的客户想要部署一个必须在数据库中保存信用卡号的应用程序 客户显然很关心安全性 我们特别关注一个令人痛苦的问题 我们如何确保只有具有 业务需要知道 的授权用户才可以访问数据 我们如何保护数据免受 DBA 的侵害 一个明显的解决方
  • ORA-12154: TNS: 无法解析指定的连接标识符 (PLSQL Developer)

    我需要使用 PLSQL Developer 访问 oracle 数据库 当我尝试连接到数据库时出现以下错误 ORA 12154 TNS could not resolve the connect identifier specified 我
  • Delphi 5 中的 Oracle 数据库连接

    我正在使用 Delphi 5 版本 我想连接到 Oracle 数据库 我有 TDatabase 组件 我不知道如何通过 Delphi 连接到数据库 请提供连接数据库的步骤 谢谢 The TDatabase http docwiki emba
  • 在触发期间更新 oracle 中的同一行?

    简短的问题 因为我不知道如何搜索这个 我可以 重新更新 同一行吗 例如 我有一个存储付款小计的字段 并且考虑到我的业务限制 我可以更新该值 我可以仅用触发器更新同一行的总计吗 预先谢谢您 顺便说一句 我正在使用 Oracle 和 PL SQ
  • Oracle 语法 - 我们是否必须在新旧语法之间进行选择?

    我在一个由大约 8 名开发人员组成的团队中负责大约 1 000 000 行源代码的代码库 我们的代码基本上是一个使用 Oracle 数据库的应用程序 但代码随着时间的推移而不断发展 我们有大量九十年代中期的源代码 团队中就我们用于查询 Or
  • 我怎样才能知道oracle 9i中哪些值是数字

    我有这个包含 varchar 的数据库 我想知道哪些记录保存数值 我试过REGEXP COUNT和其他 但我在 9i 上运行 我认为这是针对 10g gt 我怎样才能实现这个目标 I tried select to number my co
  • 使用 TLS 证书 JDBC 连接到 Oracle 数据库

    我正在尝试用 Java 编写一个连接类来使用 JDBC 驱动程序连接到 Oracle 数据库 但我想保护用于连接到 Oracle 数据库的参数 例如 jdbcurl 用户名 密码 我必须使用 TLS 证书概念来连接到 Java 中的 Ora
  • 如何在 Oracle PLSQL 中提交单个事务

    我需要编写一个 PL SQL 过程 在这个过程中 我需要在其自己的事务范围内调用另一个过程 并提交它 无论主事务是否失败或提交 换句话说 我需要类似的东西REQUIRES NEW交易传播 就像是 procedure mainProcedur
  • 在 Hibernate 中创建 UPDATE RETURNING 查询

    在 Oracle 中 我们可以创建一个更新查询 该查询将使用 RETURNING 子句返回更新的记录 Hibernate中有类似的功能吗 除了数据库生成的值之外 Hibernate 显然不需要返回更新的实例 因为对象传递给Session s

随机推荐

  • CSS 背景图像带旋转、重复和不透明度

    我正在尝试用图像制作一个漂亮的背景 但我希望重复图像以填充屏幕 不透明度设置为 0 5 并旋转 45 度 我尝试了很多方法来实现这一目标 但没有成功 有人有主意吗 在此 Codepen 中 我将图像旋转且不透明 但无法使背景重复工作 bac
  • javascript 中可点击多个 css 类

    我怎样才能做到甚至 toggle cart 也可以像 clickerHeader 一样点击 但保留其悬停效果 见箭头 请参见http jsfiddle net realitylab STE48 3 http jsfiddle net rea
  • 通过 REST 调用停止 TeamCity 构建

    是否可以通过 REST API 取消当前正在运行的构建 我有一个集成 可以获取当前正在运行的构建 如果给定类型的构建失败 我想终止它们 我知道如何列出给定类型的失败构建 然后如何传递停止命令 从 TeamCity 8 1 开始 可以停止使用
  • 检查和删除 Java HashMap 中的元素

    我正在尝试使用 Java 中的 HashMap 检查并删除元素 它的键是我创建的称为 ClusterKey 的类型 它的值是我创建的称为 ClusterValue 的类型 这是导致问题的代码 ClusterKey ck new Cluste
  • EditText setText 不显示在对话框片段上

    我对 Android 应用程序开发有点陌生 不知道如何调试 所以我尝试在 DialogFragment 上执行 EditText setText 它在日志上打印出正确的字符串 但仍然显示基于 xml 文件的旧字符串 在此处输入项目 有什么办
  • 分支的 Git 日志占位符

    是否有任何占位符用于显示 git 提交所在的分支名称 pretty format 在 git log 和 git show 中 Like H用于提交哈希 Add the git log decorate它将显示分支 标签等 如果您还想记录以
  • 如何使用 dplyr::select_if 选择非数字列

    我需要选择所有非数字列 我可以使用轻松选择所有数字列select if mtcars gt select if is numeric 如果我想选择怎么办non numeric列 我试过 mtcars gt select if is nume
  • 文本分类方法?支持向量机和决策树

    我有一个训练集 我想使用分类方法根据我的训练集对其他文档进行分类 我的文档类型是新闻 类别是体育 政治 经济等 我完全理解朴素贝叶斯和KNN 但是SVM和决策树很模糊 我不知道我是否可以自己实现这个方法 或者有使用这种方法的应用程序吗 我可
  • 从母版页调用 Html.RenderPartial

    这是一个场景 假设我的网站有两个控制器 负责显示不同类型的内容 页面和文章 我需要将部分视图嵌入到我的母版页中 该母版页将列出按某些条件过滤的页面和文章 并显示在每个页面上 我无法在我的主页上设置模型 我是对的吗 如何使用 Html Ren
  • iPhone 应用程序在设备上崩溃,找不到文件

    我看到这个错误 无法读取 Developer Platforms iPhoneOS platform DeviceSupport 4 3 2 8H7 Symbols Developer usr lib libXcodeDebuggerSup
  • 无符号整数增量会导致未定义的已定义行为吗?

    读完后64 位上的 32 位无符号乘法会导致未定义的行为吗 https stackoverflow com q 27001604 1806289在 StackOverflow 上的问题中 我开始思考小型无符号类型上的典型算术运算是否会导致根
  • 如何正确使用九块图像

    我想创建某种看起来像这样的行图像 但我希望它能够随着屏幕尺寸和密度而缩放 所以读这篇文章http developer android com guide developing tools draw9patch html http devel
  • python virtualenv 未使用正确版本的 python

    我正在创建一个 Django 应用程序 需要我使用 python2 7 6 我的系统安装了 python3 4 1 所以我必须使用安装了 python2 7 的 virtualenv 我使用 Pycharm 安装了这样一个 virtuale
  • Rails 3:如何用英语以外的语言格式化日期?

    格式化一个Date用英语我做 Date today to s long ordinal gt September 28th 2011 如何用俄语 或任何其他语言 格式化日期 有的是Rails 中的国际化 API http guides ru
  • django-allauth - 使用 Gmail 帐户发送电子邮件验证

    我已经设置 allauth 为每个新注册用户发送一封电子邮件 以便可以验证他们的电子邮件 现在我使用 email backend 以便将电子邮件发送到终端 一切正常 但现在我想可以将其全部设置好 以便发送电子邮件 并且因为我 可能 在主机服
  • 如何使用 jQuery 在带有动画的表格中添加新行?

    这就是我正在做的在表中添加新行的操作 function expandAll myTableID gt tbody gt tr gt td nth child 2 gt div nth child 2 each function html t
  • android同时显示SIM卡和手机联系人

    在我的代码中 我应该只显示电话联系人 我遵循了之前的帖子 但仍然显示电话和 SIM 卡联系人 这是我的代码 Uri uri ContactsContract CommonDataKinds Phone CONTENT URI String
  • DateTime 为空字符串或 null?如何检查?

    Q 我想检查日期时间null value如果日期时间为空 则清空报告中的单元格 但我不知道如何执行此操作 它看起来像这样1 1 0001如果它是空的 我希望它是空单元格 这是我的数据集中的数据类型 这是我的列的表达式值 FormatDate
  • 是否有 IntelliJ Java Profiler [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 IntelliJ 是否有像 Matlab 那样的 Profiler 假设你有这个代码 a true i 0 while a if a i
  • ORA-04084: 无法更改此触发器类型的新值

    我正在尝试打开 pl sql 触发器 该触发器在故事更改时计算表中某些单元格的总数 这是代码 ALTER session SET nls date format dd mm yyyy CREATE OR REPLACE TRIGGER TO