问题标签 [mutating-table]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
458 浏览

triggers - Oracle 11g 触发器替换部分文本字符串

我遇到了不断变化的触发器的问题。触发器的目标是在更新文件路径时更改字符串的一部分。这是我到目前为止所拥有的,它编译得很好。

当我进行更新单行的测试时,我得到了通常的变异表错误。有什么建议吗?我将不胜感激!

0 投票
2 回答
76 浏览

plsql - PLSQL:变异表停止我的“更新触发器之前”。该怎么办?

我终于编译了我的触发器,但现在我在进行相关更新时遇到了变异表错误:

我知道您可以通过删除触发器中的“每行”行来解决此问题,但我需要使用“旧”和“新”值,因此我需要“每行”代码。

0 投票
1 回答
368 浏览

sql - Oracle 触发器 - 更新时我需要更新同一张表中的其他行 - 出现变异错误

作为我被要求做的令人讨厌的 hack 的一部分,我需要修改触发器以更新表中的关联记录 - 但我收到了 mutating table 错误。

数据如下所示:

如果 person_id = 1 的 active_ind 设置为 N,我需要将与同一路线(route_id = 1)关联的其他人的 active_id 也设置为 N。

有一个当前触发器(更新后)可以更新其他可以正常工作的路由关联表。添加以下代码时,出现变异表错误:

这是因为我试图在更新过程中更新表。任何人都可以提出解决方案吗?

0 投票
1 回答
1711 浏览

sql - ORACLE 触发检查表并删除行

嘿,我在数据库中创建触发器时遇到了一点问题。

我有一个名为“位于”的表,其中包含:

  • 国家
  • 城市

所以 Lake、Sea 和 River 是外键。

我创建了这三个约束:

所以每次我删除一个湖泊、河流或海洋时,它都会被设置为 NULL。

现在我尝试创建这个触发器:

但后来我得到一个变异错误。

目标是删除这三件事为空的每个元组。

也许有人可以帮助我?

提前致谢

0 投票
1 回答
69 浏览

plsql - Mutating table issue in after row trigger

I've created a package that contains one procedure and one function. Function is called by the trigger on insert after each row on the table REZULTAT.

Function is supposed to calculate one of the columns for the inserted row, and its input parameter is ID of the inserted row which I used to select that particular inserted row into record type before calculation with record type.

This apparently causes mutating table error, even though the function is called after insert on each row.

How can I get around this and make the calculation with each inserted row in that function?

0 投票
2 回答
1594 浏览

plsql - PL/SQL 触发器得到一个变异表错误

我的触发器想要检查“新”经理是否监督不超过 5 名员工。BLOCKED_MANAGER 表(ssn,numberofemployees)中仅监督 5 人的经理。最后,每个更新都记录在 SUPERLOG 表中(日期、用户、旧管理器、新管理器)。我没有收到有关触发器的编译错误,但是当我更新 superssn 时,我收到此错误:

我该如何解决这个触发器?谢谢

0 投票
1 回答
336 浏览

oracle - 插入后触发器触发的存储过程引发的变异表错误

每当数据插入表时,我需要通过“插入后”触发器调用存储过程,但我遇到“错误 ORA-04091:表 TEST.EMP 正在变异,触发器/函数可能看不到它”。我了解此错误背后的原因,但是如何在不干扰程序的情况下通过复合触发器克服此错误?

0 投票
2 回答
175 浏览

sql - SQL 使用过程和触发器

我正在尝试创建一些触发器和过程来自动填充我的数据库中的一些表。我有两个表,用户和实用程序。

用户表:

实用程序表

现在我想在我的数据库中发生什么。

  1. 当一个用户被插入到用户表中时,它会触发一个触发器。
  2. 然后,此触发器将为已创建的用户将一堆实用程序插入到 UTILITIES 表中(User_ID 将与刚刚创建的 User_ID 匹配)。
  3. 将实用程序插入 UTILITIES 表后,我想运行一个过程,该过程将 SUM(Utility_Cost) 在 UTILITIES 表中,并将 SUM 存储在 USER_ID 匹配的 USERS.Memory_Usage 中。

到目前为止我创建的内容:

在 USERS 表上插入后触发触发:

从触发器调用的过程:

但是,当我尝试插入 USERS 表时,我得到:

有谁知道为什么会这样?任何信息将不胜感激。谢谢!

0 投票
2 回答
544 浏览

oracle - Oracle 触发器 - 表名发生变化,触发器/函数可能看不到它

我有一个具有以下场景(简化)的 Oracle 数据库:

这意味着,3 个项目 - 项目 1000 有 2 个不同的参数,第二个和第三个项目各有一个参数。

现在我需要在项目表上编写一个触发器,它会自动在参数表中插入一个新行,其中参数的最高值为 +1,类型为“4614”,具有给定的 SCODE。

...应该触发事件

现在我有两种可能性,但都不起作用:

如果触发器声明为“BEFORE”,我无法在参数表中插入,因为外键约束向我显示一个错误,即 Project 1003 尚未创建。不可能在触发器内执行 Commit。

如果触发器被声明为“AFTER”,我得到一个错误

因为我正在访问现在触发的表。

这个问题必须有任何解决方案。任何帮助表示赞赏!

//编辑

我的触发器:

函数 get_next_param_val 只是选择项目表并返回正确的参数值。

0 投票
0 回答
59 浏览

oracle - 在 Oracle 中创建 AFTER 触发器以访问 :new 和 :old 变量

我在一个有两个日期列的表中有以下情况,Start_DT并且End_DT.

每当我插入新行时,例如我想插入以下 tuple ('06-02-2012', '10-02-2012')End_DT按时间顺序排列的最后一个(前一个)行Start_DT时间重叠

所以,最后,插入我的新行后,表格将如下所示:

问题是我创建的触发器给了我一个错误,我理解这是我编写触发器的方式,但我不知道如何修改它以实现我想要的:

我们认为必须使用SELECT FOR UDPATE才能在前一行上加锁,以便进行更新。但是将此触发器更改为AFTER,我不确定我们是否可以在表上实现相同的锁定。

我的触发器代码是:

我在Oracle 文档页面上在线发现BEFORE 触发器无法修改同一个表中的数据:

所以,我正在考虑将我的触发器修改为一种AFTER类型,但是我将无法访问我的:new:old变量。

任何帮助是极大的赞赏。