问题标签 [database-trigger]

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 回答
5903 浏览

plsql - PlSQL 触发错误 ORA-0000 ORA-06512:

我一周创建了这个触发器,但没有编译错误但是当我输入一条记录时,EMP_REPORT 它会弹出一条错误消息说

我无法弄清楚我哪里出错了。请帮助我 :(

请注意,我无法删除约束及其主键

0 投票
2 回答
1600 浏览

plsql - 如何插入nextval以在for循环内触发

这是触发器的代码,它有一个 for 循环。当触发器被触发(插入或更新)时,另一个表数据必须包含它是 MICL_SUP

这是表结构。Sup_ID主键和唯一键。我无法对表结构进行任何更改

要输入我使用的 sup_ID,select micl_sup_id_seq.nextval into SUPID from dual; 但是当我运行此代码时出现错误 "RA-00001: unique constraint violated"(这不是编译错误)还有其他方法可以添加sup_ID吗?我哪里出错了?

这个问题与这个触发器PlSQL触发器错误ORA-0000 ORA-06512有关:

0 投票
1 回答
1112 浏览

oracle - PL/SQL LOGOFF TRIGGER 未正确捕获注销事件

我创建了一个这样的 LOGOFF 触发器

并使用使用 Oracle.DataAccess.Client 模块的 OracleConnection 对象的小型 VB.Net 应用程序对其进行测试。虽然 LOGON 事件被类似的 LOGON 触发器正确捕获,但 LOGOOFF 事件仅在客户端连接关闭并且随后关闭整个客户端应用程序时才被捕获,即这还不够:

这也不是:

也不是这个:

我究竟做错了什么?在此先感谢,

0 投票
0 回答
68 浏览

mysql - 如何创建一个触发器,当输入新一周的数据集时,在 MySQL 中对前一周的数据集执行计算?

假设我有 2 张桌子:

我想做的是什么时候dataset用下周的信息更新(每周更新一次),自动将相关信息插入到datasetCalculation. 等效的方法是用某种语言(比方说 php)计算 的总和datasetItem(1-3),然后将其插入 datasetCalculation. datasetItemSum以及其他相关信息。相反,我希望这由数据库自动完成。

0 投票
3 回答
217 浏览

sql-server - 我们不能省略数据库触发器吗?

正如维基百科所说

数据库触发器通常用于:

  • 审核更改(例如,记录更改所涉及的用户和角色)
  • 增强更改(例如,确保对记录的每次更改都带有服务器时钟的时间戳)
  • 执行业务规则(例如,要求每张发票至少有一个行项目)等。

参考:数据库触发器 - 维基百科

但是我们可以使用通用编程语言(尤其是 OOP)在业务层内部轻松完成这些事情。那么现代软件架构中数据库触发器的必要性是什么?为什么我们真的需要它们?

0 投票
0 回答
857 浏览

oracle - ORACLE trigger issue - inserted multiple rows instead of one

I have an After Insert trigger on table A, Which is supposed to this - 1) After a row is inserted into table A, check some data of new row. 2) If the conditions are met, it will insert those data into another table B. 3) for one row inserted into table A, if conditions are met, only one row will be inserted into table B.

This trigger was working as design without any issues. Suddenly, couple of days ago, we noticed that for some rows inserted (not ALL) in table A, this trigger inserted multiple rows in table B. There are no apparent matching pattern in the rows, for which multiple rows in table B was inserted. There are no patterns in number of multiple rows either. I mean, for some rows in table A, 19/20/21 rows and some rows 27/28/30 rows were inserted into table B.

This problem happened for 2 days. And then this problem just disappeared. Now, I understand this is not an usual ORACLE issue. My question is, have any of experienced anything like this? if so, what could be the reason for this abnormal behavior?

0 投票
2 回答
3105 浏览

oracle - 在 blob 表的触发器中计算 blob 哈希

我的环境是Oracle 11g。我有一个表 T_IMG,其列是图像 blob、图像标识符和计算为 SHA256 的图像哈希。我希望每次在 T_IMG 表中插入或更新一行时计算图像哈希并将其插入到 T_IMG 表中。为此,我在 T_IMG 表上插入或更新时使用了 before 触发器,但我很难访问触发器内的图像 blob 列。

字符串和 blob 的 SHA256 哈希由以下代码计算,该代码基于 Sean Stuber 在http://seanstuber.wordpress.com/2012/03/22/using-java-to-extend-dbms_crypto/上的示例

上述功能有效。测试它们我得到:

SHA2_STRING('0123456789',256)
------------------------------------------ -------------------------------------- 84D89877F0D4041EFB6BF91A16F0248F2FD573E6AF05C19F96BEDB9F882F7882
选择了 1 行。

SHA2_BLOB(UTL_RAW.CAST_TO_RAW('0123456789'),256)
------------------------- ------------------------------------------------------- 84D89877F0D4041EFB6BF91A16F0248F2FD573E6AF05C19F96BEDB9F882F7882
选择了 1 行。

我在 T_IMG 上插入或更新时使用前触发器来计算图像列的 SH256 散列。

触发器本身起作用;当它抛出以下错误时,它计算并在模型数据(制造的字符串或 blob)上插入哈希值,而不是在真实图像 blob 数据上:

ORA-29532:Java 调用因未捕获的 Java 异常而终止:java.sql.SQLException:无效的空 lob 操作
ORA-06512:在“TEST.SHA2_BLOB”,第 1 行
ORA-06512:在“TEST.TR_IMG_UPSERT”,第 13 行
ORA- 04088:执行触发器“TEST.TR_IMG_UPSERT”时出错

似乎触发器将 :new.IMG 数据读取为空 blob

为什么会发生这种情况,我该如何解决每次在 T_IMG 表中插入或更新一行时自动计算并将图像的哈希插入到 T_IMG 表中的问题?

注意:插入/更新数据行的客户端应用程序无法提供哈希值。

阿迪姆

0 投票
1 回答
208 浏览

c# - 在前端制作数据库触发器或处理所有触发器事件更有效

我正在使用 ac#.net 应用程序
我正在从事学校管理项目

有时我在多个表中有一些条目,所以最好在前端处理这个,或者我应该为此使用数据库触发器。
你能说出哪个东西在性能和时间效率上更好吗

0 投票
1 回答
17190 浏览

oracle - 使用触发器更改插入的值

几周前我刚刚开始学习 SQL,我正在尝试制作一个触发器,如果​​它小于 10,则将插入的值更改为 10。我现在搜索了 4 小时,我找到了很多答案,但没有很好(对我来说)。我真的不明白问题出在哪里。这是代码:

0 投票
1 回答
300 浏览

sql - 更新触发器需要对相同的表和字段进行更新

我无法让此更新触发器正常工作。我想知道我正在尝试做的事情是否可能。

所以我有一个名为的客户表,tblCustomers其中包含以下字段:

  • ActivationStatus
  • RateClass
  • ParentCustomerID (表示该客户是哪个客户(如果有)的“孩子”)

ActivationStatus每当父客户或父客户发生 UPDATE 时RateClass,任何子客户也需要使用相同的值进行更新。

我目前有:

当我尝试更新时出现错误: 超出最大存储过程、函数、触发器或视图嵌套级别(限制 32)

很明显,一个递归问题正在发生,它为什么会发生是有道理的,但是应该可以做这样的事情,对吧?我怎样才能做到这一点?

请注意,我宁愿不这样做SET RECURSIVE_TRIGGERS OFF,因为我不确定这会对我们在整个数据库中拥有的许多其他触发器产生什么影响。

谢谢!