问题标签 [triggers]

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 投票
7 回答
95117 浏览

mysql - Throw an error preventing a table update in a MySQL trigger

If I have a trigger before the update on a table, how can I throw an error that prevents the update on that table?

0 投票
3 回答
3014 浏览

sql - 基于定时器的事件触发器

我目前正在从事一个具有特定要求的项目。简要概述如下:

  • 从外部网络服务检索数据
  • 数据存储在 SQL 2005 中
  • 数据通过 Web GUI 进行操作
  • 与 Web 服务通信的 Windows 服务与我们的内部 Web UI 没有耦合,除了通过数据库。
  • 与 Web 服务的通信既需要基于时间,又需要通过用户对 Web UI 的干预来触发。

Web 服务通信触发的当前(预生产)模型是通过存储手动干预生成的触发请求的数据库表。我真的不想拥有多个触发机制,但希望能够根据调用时间使用触发器填充数据库表。在我看来,有两种方法可以做到这一点。

1) 调整触发器表以存储两个额外的参数。一个是“这是基于时间的还是手动添加的?” 和一个可以为空的字段来存储时间细节(具体格式待定)。如果它是手动创建的触发器,则在触发触发器时将其标记为已处理,但如果它是定时触发器则不标记。

2) 创建第二个 Windows 服务,以定时间隔动态创建触发器。

第二个选项对我来说似乎是一个骗局,但选项 1 的管理很容易变成一个编程噩梦(你怎么知道表的最后一次轮询是否返回了需要触发的事件,然后你如何停止它在下一次投票时重新触发)

如果有人能抽出几分钟帮助我决定走哪条路线(这两条路线之一,或者可能是第三条未列出的路线),我将不胜感激。

0 投票
11 回答
4346 浏览

sql - 建立审计制度;SQL Server 后端上的 MS Access 前端

所以基本上我正在为我的公司构建一个应用程序,它需要使用 MS Access 构建,它需要在 SQL Server 上构建。

我已经制定了大部分计划,但很难找到处理审计系统的方法。

由于它仅在内部使用,您甚至无法从建筑物外部触摸数据库,我们没有使用登录系统,因为该程序只有在用户已经通过 Active 登录到我们的内部网络后才会使用目录。知道了这一点,我们正在使用一个系统来自动检测 Active Directory 用户的名称以及他们在其中一个数据库表中的权限,从而决定他们可以做什么或不可以做什么。

所以实际的审计表将有 3 列(这个设计可能会改变,但对于这个问题没关系);谁(Active Directory 用户)、何时(添加/删除/编辑时间)、什么(更改了什么)

我的问题是我应该如何处理这个问题。理想情况下,我知道我应该使用触发器,以便在没有记录审计的情况下更新数据库,但是我不知道如何以这种方式获取 Active Directory 用户。另一种方法是将其直接编码到 Access 源中,以便每当发生变化时,我都会运行 INSERT 语句。显然这是有缺陷的,因为如果 Access 发生某些事情或数据库被其他东西触及,那么它将不会记录审计。

任何可能对我有帮助的建议、示例或文章将不胜感激!

0 投票
12 回答
5807 浏览

sql-server - 数据库触发器

在过去,我从来不喜欢在数据库表上使用触发器。对我来说,它们总是代表着一些将在数据库端发生的“魔法”,远离我的应用程序代码的控制。我还想限制数据库必须做的工作量,因为它通常是共享资源,我一直认为触发器在高负载情况下可能会变得很昂贵。

也就是说,我发现了几个使用触发器有意义的实例(至少在我看来它们是有意义的)。不过最近,我发现自己有时可能需要“绕过”触发器。我对不得不寻找方法来做到这一点感到非常内疚,我仍然认为更好的数据库设计会减少这种绕过的需要。不幸的是,这个数据库被多个应用程序使用,其中一些是由一个非常不合作的开发团队维护的,他们会对模式更改大喊大叫,所以我被卡住了。

关于触发器的一般共识是什么?爱他们?讨厌他们?认为它们在某些情况下是有目的的?是否认为需要绕过触发器意味着您“做错了”?

0 投票
2 回答
2167 浏览

sql-server - 没有交易就触发?

是否可以创建一个不在事务中的触发器?

我想用触发器更新链接服务器上的数据,但由于防火墙问题,我们无法在两台服务器之间创建分布式事务。

0 投票
2 回答
2881 浏览

oracle - PLS-00306(错误的参数数量或类型)调用游标

我想我可能在这里遗漏了一些东西。这是触发器的相关部分:

这是我要回来的错误消息,

如果我正确理解了文档,那应该可以,但是既然不是,我一定是做错了什么。有任何想法吗?


@ Matthew - 我很感激你的帮助,但我感到困惑的原因是这段代码对我不起作用并且引发了引用的错误。我们在数据库中有其他触发器的代码几乎完全一样,所以我不确定这是我做错了什么,还是我试图存储触发器的方式等等。


@Matthew -好吧,现在我感到很尴尬。我将您提供的代码复制/粘贴到新触发器中,效果很好。所以我回到原来的触发器并尝试它并再次收到错误消息,除了这次我开始从触发器中删除东西并且在摆脱这条线之后,

东西保存得很好。所以事实证明,我认为错误在哪里,实际上并不是错误在哪里。

0 投票
6 回答
49882 浏览

sql-server - 如何在 SQL Server 中获取触发器的定义(主体)?

找不到满足我需求的 SQL 差异工具,我正在编写自己的。在 INFORMATION_SCHEMA 和 sys 表之间,我有一个基本完整的工作版本。但是我在元数据中找不到的一件事是触发器的定义,你知道,实际的 SQL 代码。我忽略了什么吗?

谢谢。


谢谢,皮特,我不知道!

斯科特,我正在使用不允许远程连接到数据库的非常基本的托管包。我不知道 RedGate 的规格(无论如何我买不起)他们是否提供了解决方法,虽然那里也有 API(例如来自 Apex 的 API),但我没有看到投资于我仍然需要更多编程的解决方案。:)

我的解决方案是在站点上放置一个充当“模式服务”的 ASPX 页面,将收集的元数据作为 XML 返回。我设置了一个小 AJAX 应用程序,它将任意数量的目录实例与主实例进行比较并显示差异。这并不完美,但对我来说是向前迈出的重要一步。

再次感谢!

0 投票
6 回答
140762 浏览

mysql - 如何列出 MySQL 数据库中的所有触发器?

列出 MySQL 数据库中所有触发器的命令是什么?

0 投票
4 回答
2054 浏览

mysql - 设置 MySQL 触发器

我一直在听说触发器,我有几个问题。
什么是触发器?
我该如何设置它们?
除了典型的 SQL 内容之外,是否还有其他应采取的预防措施?

0 投票
2 回答
6851 浏览

mysql - MySQL 触发器和存储过程复制

好的,我正在运行一个具有单个主设备和多个从设备的设置。所有写入都通过主服务器并被复制到严格用于读取的从服务器。

现在我有一个由插入触发器调用的存储过程(不是函数)。根据 MySQL 文档,对于复制触发器,记录对触发器的调用,而存储过程实际记录存储过程的结果。

所以我的问题是,当我的触发器被触发时,它是否会复制触发器和触发器调用的过程的结果(导致过程有效地运行两次)?或者它会简单地复制触发器,让从属设备自己重新运行存储过程?

谢谢