标签: triggers

错误:未终止的引用字符串在或附近

在使用ANT执行下面显示的触发器代码时,我收到错误

org.postgresql.util.PSQLException: ERROR: unterminated quoted string at or near "' DECLARE timeout integer"
Position: 57
Run Code Online (Sandbox Code Playgroud)

我能够通过PGADmin(由postgres提供)和命令行实用程序"psql"成功执行以下代码并添加触发器功能但是在通过ANT执行时它每次都会失败

BEGIN TRANSACTION;

CREATE OR REPLACE FUNCTION sweeper() RETURNS trigger as '
    DECLARE
    timeout integer;
    BEGIN
    timeout = 30 * 24 * 60 * 60 ;
        DELETE FROM diagnosticdata WHERE current_timestamp - teststarttime  > (timeout * ''1 sec''::interval);
        return NEW;
    END;
' LANGUAGE 'plpgsql';

-- Trigger: sweep on diagnosticdata

CREATE TRIGGER sweep
  AFTER INSERT
  ON diagnosticdata
  FOR EACH ROW
  EXECUTE PROCEDURE sweeper();

END;
Run Code Online (Sandbox Code Playgroud)

ant postgresql triggers plpgsql

40
推荐指数
3
解决办法
6万
查看次数

如何在不推送新提交的情况下重新启动 Github 检查?

我目前正在使用 Github 与基本的 Jenkins 集成(使用 Github 插件):每次我推送一些东西时,我的 Jenkins 测试都会被触发,并且状态会报告给 Github。

由于一些肮脏的原因(我知道根本原因在这里),我的测试可能会随机失败,然后向 Github 报告失败状态(这阻止了合并 PR 的可能性:这是预期的行为)。

您知道是否可以在不推送新提交的情况下重新启动测试吗?因为我知道如果我重新启动测试,它们就会通过。

提前致谢

triggers github pull-request jenkins

40
推荐指数
4
解决办法
2万
查看次数

如何在Outlook中收到新邮件后触发宏运行?

我正在编写一个宏,它根据从Nagios服务器收到的警报作为电子邮件在数据库上创建票证.但是,我不能让宏在检查邮件时在无限循环中运行,因为它太资源太重而使我的桌面挂起.我需要找到一种方法只在收到新邮件时触发宏.

我在MSDN网站上查找了NewMail事件的内容,但我找不到任何连贯的内容.任何人都可以向我展示一些示例代码,以显示如何从新邮件事件中触发宏吗?

outlook vba triggers outlook-vba

38
推荐指数
2
解决办法
9万
查看次数

将用户标识传递给PostgreSQL触发器

我正在使用PostgreSQL 9.1.我的数据库是结构化的,以便我的应用程序使用实际的表.对于每个表,都有历史表,仅存储更改历史记录.历史表包含相同的字段,实际表格和字段形成一些额外信息,例如.编辑时间.历史表仅由触发器处理.

我有两种触发器:

  1. Before INSERT 触发器在创建表时向表添加一些额外信息(例如,create_time).
  2. Before UPDATE触发器和before DELETE触发器将旧值从实际表复制到历史表.

问题是我想使用触发器来存储进行这些更改的用户的ID.而id我是来自php应用程序的id,而不是PostgreSQL用户id.

有没有合理的方法呢?

使用INSERT和UPDATE,可以只将id的额外字段添加到实际表中,并将用户id作为SQL查询的一部分传递给SQL.据我所知,这不适用于DELETE.

所有触发器的结构如下:

CREATE OR REPLACE FUNCTION before_delete_customer() RETURNS trigger AS $BODY$
BEGIN
    INSERT INTO _customer (
        edited_by,
        edit_time,
        field1,
        field2,
        ...,
        fieldN
    ) VALUES (
        -1, // <- This should be user id.
        NOW(),
        OLD.field1,
        OLD.field2,
        ...,
        OLD.fieldN
    );
    RETURN OLD;
END; $BODY$
LANGUAGE plpgsql
Run Code Online (Sandbox Code Playgroud)

postgresql triggers

37
推荐指数
2
解决办法
1万
查看次数

有没有办法只为特定的执行范围禁用SQL Server触发器?

在SQL Server 2005中,有没有办法让触发器找出哪个对象负责触发触发器?我想用它来禁用一个存储的prodecure的触发器.

有没有其他方法只为当前事务禁用触发器?我可以使用以下代码,但如果我没有弄错,它也会影响并发事务 - 这将是一件坏事.

DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } ON { object_name | DATABASE | ALL SERVER } [ ; ]

ENABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } ON { object_name | DATABASE | ALL SERVER } [ ; ]
Run Code Online (Sandbox Code Playgroud)

如果可能的话,我想避免在我的表中使用"NoTrigger"字段并执行a的技术NoTrigger = null,因为我希望保持表尽可能小.

我想避免触发器的原因是因为它包含对表的手动更新很重要的逻辑,但我的存储过程将处理这个逻辑.因为这将是一个高度使用的程序,我希望它快.

触发器会在服务器上产生额外的开销,因为它们会启动隐式事务.一旦执行了触发器,就会启动一个新的隐式事务,并且事务中的任何数据检索都将保留受影响表的锁定.

来自:http://searchsqlserver.techtarget.com/tip/1,289483,sid87_gci1170220,00.html#trigger

t-sql sql-server triggers

36
推荐指数
2
解决办法
4万
查看次数

在特定坐标处触发JavaScript click()事件

尝试触发(触发)单击事件.它很容易在jQuery中做,但无法弄清楚如何设置事件的坐标并发送它们.

基本上,我需要在特定位置触发一次点击(在trigger()调用之前计算).

任何方式(在jQuery或其他方面)?

谢谢 -

javascript jquery triggers click

36
推荐指数
1
解决办法
4万
查看次数

SQL存储过程和触发器之间的差异

我无法理解sql中存储过程和触发器之间的区别.如果有人能够善意向我解释这将是伟大的.

提前致谢

sql triggers stored-procedures

36
推荐指数
5
解决办法
8万
查看次数

PostgreSQL RULEs有什么用?

我经常看到它声明应该避免使用规则并使用触发器.我可以看到规则系统中的危险,但当然有规则的有效用途,对吧?这些是什么?

我出于一般兴趣而对此提出这个问题; 我对数据库不太熟悉.

可能是有效用途的示例

例如,在过去我需要锁定某些数据,所以我做了类似这样的事情:

CREATE OR REPLACE RULE protect_data AS
  ON UPDATE TO exampletable             -- another similar rule for DELETE
  WHERE OLD.type = 'protected'
  DO INSTEAD NOTHING;
Run Code Online (Sandbox Code Playgroud)

然后,如果我想编辑受保护的数据:

START TRANSACTION;
  ALTER TABLE exampletable DISABLE RULE protect_data;
  -- edit data as I like
  ALTER TABLE exampletable ENABLE RULE protect_data;
COMMIT;
Run Code Online (Sandbox Code Playgroud)

我同意这是hacky,但在这种情况下我无法更改访问数据库的应用程序(甚至在它上面抛出错误).所以奖励积分查找原因,这是一个危险的/无效的使用规则系统的,但不是为什么,这是不好的设计.

database postgresql triggers rules

35
推荐指数
4
解决办法
2万
查看次数

元素在视口中时的jquery触发器函数

当jquery.localscroll到达文档的某个点(div)时,我想触发一个事件.

让我们说我们从顶部div垂直滚动到第三个.当它到达那里时,动作就会触发.

jquery triggers function viewport

34
推荐指数
3
解决办法
7万
查看次数

如何添加"IF NOT EXISTS"来创建触发器语句

我正在使用sql server 2008 R2.更具体地说,Microsoft SQL Server 2008 R2(RTM) - 10.50.1600.1(X64)2010年4月2日15:48:46版权所有(c)Windows NT 6.1上的Microsoft Corporation标准版(64位)(Build 7601:Service Pack 1) )(管理程序).我是sql server和procedures/triggers的新手.我有以下代码来创建一个触发器(它工作):

CREATE TRIGGER [dbo].[Insert_WithdrawalCodes] 
   ON  [dbo].[PupilWithdrawalReason] 
   AFTER INSERT
AS 
BEGIN
    SET NOCOUNT ON;
        UPDATE [dbo].[PupilWithdrawalReason] SET DateCreated=dbo.SYSTEMTIME() 
        WHERE WithdrawalCodeID IN (SELECT WithdrawalCodeID FROM inserted)
END
Run Code Online (Sandbox Code Playgroud)

仅当触发器尚不存在时,如何有条件地创建?我在这做错了什么?Stackoverflow有很好的"如果不存在"的例子,但我不能让它与CREATE一起工作.这是我失败的努力之一:

IF NOT EXISTS (SELECT * FROM sys.objects WHERE type = 'TR' AND name = 'Insert_WithdrawalCodes')
   exec('CREATE TRIGGER [dbo].[Insert_WithdrawalCodes] ON  [dbo].[PupilWithdrawalReason] AFTER INSERT AS BEGIN SET NOCOUNT ON; UPDATE [dbo].[PupilWithdrawalReason] SET DateCreated=dbo.SYSTEMTIME() WHERE WithdrawalCodeID IN (SELECT WithdrawalCodeID FROM …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server triggers if-statement

34
推荐指数
4
解决办法
7万
查看次数