标签: triggers

Sql Server触发器将值从新行插入另一个表

我有一个使用asp.net成员资格模式的网站.我想在aspnet_users表上设置一个触发器,它将user_id和新行的user_name插入到另一个表中.

如何从最后一次插入中获取值?

我可以选择最后一个date_created,但这看起来很臭.有没有更好的办法?

sql sql-server triggers

31
推荐指数
4
解决办法
14万
查看次数

如何在MySql触发器中中止INSERT操作?

我有一个包含url的表和一个表示其参数的字符串.问题是我想要一个url和一个参数字符串作为表的唯一约束 - 也就是说没有条目可以具有相同的url和参数字符串.参数字符串可以是任意长度(比800bytes长左右这是一个MySQL的关键最大长度,所以因为它抛出一个错误,我不能用独有的(URL,则params)...).

我考虑使用触发器来执行此操作,但如果触发器发现插入即将插入重复条目,如何抛出异常/引发错误?我想我想抛出MySqlException,就像MySql一样,重复主键等,所以我可以用我的C#代码捕获它.

我在触发器中有两个部分需要帮助:...中止抛出异常到C#...如何向C#抛出异常等?...允许插入... - 如果没有重复输入,我如何才允许插入?

继承人触发代码:

CREATE TRIGGER urls_check_duplicates
BEFORE INSERT ON urls
FOR EACH ROW

BEGIN
DECLARE num_rows INTEGER;

SELECT COUNT(*)
INTO num_rows
FROM urls
WHERE url = NEW.url AND params = NEW.params;

IF num_rows > 0 THEN
   ... ABORT/throw exception to C# ...
ELSE
   ... Allow insert ...
END
Run Code Online (Sandbox Code Playgroud)

mysql triggers duplicates

31
推荐指数
3
解决办法
4万
查看次数

在SQL Server中创建审计触发器

我需要在SQL Server 2005数据库中的两个表上实现更改跟踪.我需要审核添加,删除,更新(详细了解更新内容).我正计划使用触发器来执行此操作,但在Google上进行搜索后,我发现错误地执行此操作非常容易,而且我想在开始时避免使用它.

任何人都可以发布更新触发器的示例,以优雅的方式成功完成此操作吗?我希望最终得到一个具有以下结构的审计表:

  • ID
  • LOGDATE
  • 表名
  • TransactionType(更新/插入/删除)
  • 的recordId
  • 字段名
  • 的OldValue
  • 的NewValue

......但我愿意接受建议.

谢谢!

sql-server audit triggers sql-server-2005

30
推荐指数
3
解决办法
8万
查看次数

IF服务器中的UPDATE()触发器

如果有的话:

IF UPDATE (col1)
Run Code Online (Sandbox Code Playgroud)

...在表上的SQL服务器触发器中,仅当col1已更改或已更新时才返回true吗?

我有一个常规的更新查询

UPDATE table-name 
   SET col1 = 'x', 
       col2 =  'y' 
 WHERE id = 999
Run Code Online (Sandbox Code Playgroud)

现在关注的是,如果"col1"先前为"x",那么我们将其更新为"x"将IF UPDATE ("col1")触发返回True或不返回?

我正面临这个问题,因为我的保存查询对于所有列都是通用的,但是当我添加这个条件时它会返回True,即使它没有被更改...所以我担心在这种情况下该怎么做如果我想添加这样的条件?

sql sql-server triggers sql-server-2005

30
推荐指数
2
解决办法
7万
查看次数

如何在SQL Server的触发器中编辑INSERT的值?

我有桌子 Tb

ID | Name   | Desc
-------------------------
 1 | Sample | sample desc
Run Code Online (Sandbox Code Playgroud)

我想在INSERT上创建一个触发器,它将改变插入的值Desc,例如:

INSERT INTO Tb(Name, Desc) VALUES ('x', 'y')
Run Code Online (Sandbox Code Playgroud)

会导致

ID | Name   | Desc
-------------------------
 1 | Sample | sample desc
 2 | x      | Y edited
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我得到了插入的值,将其Desc更改为大写并添加edited到最后.

这就是我需要的,得到Desc插入和修改它.

我怎样才能做到这一点?

插入更新后处理它会更好吗?或者使用INSTEAD OF INSERT触发并在每次表结构更改时修改它?

sql t-sql sql-server triggers sql-server-2008

30
推荐指数
3
解决办法
8万
查看次数

如何编写MySQL触发器以将行插入另一个表?

我想在桌面上创建一个MySQL触发器.基本上,我正在创建一个活动流,需要记录用户的操作.当用户发表评论时,我想要触发该表上的数据库触发器,并且:

  1. 获取最后插入的行的ID(注释行的ID).
  2. 使用上一个插入行中的数据对活动表执行INSERT.

我基本上会复制此触发器以删除注释.

我有的问题:

  1. LAST_INSERT_ID()是获取ID的最佳方式吗?
  2. 如何正确存储上次插入的注释行中的数据,以便在"INSERT into activities"语句中使用?
  3. 我应该使用存储过程的组合以及触发器吗?
  4. 触发器的基本结构是什么样的?

谢谢!自从我触及与DB触发器,程序和功能有关的任何事情以来,已经有几年了.

mysql triggers procedures lastinsertid

30
推荐指数
1
解决办法
8万
查看次数

MySQL错误1436:线程堆栈溢出,简单查询

我正在对表进行非常简单的更新,这也会触发一个非常简单的触发器,它会给我错误

#1436 - Thread stack overrun:  6136 bytes used of a 131072 byte stack, and 128000 bytes needed.
Run Code Online (Sandbox Code Playgroud)

我执行的查询:

UPDATE field_values SET value = 'asaf' WHERE field_values.id =1
Run Code Online (Sandbox Code Playgroud)

值字段是一个text字段.所以在理论上它可能会变得安静.在这种情况下情况并非如此.

正在执行的触发器是:

DELIMITER $$
    CREATE TRIGGER field_value_update_trigger BEFORE UPDATE ON community_fields_values
    FOR EACH ROW BEGIN
      INSERT INTO user_field_log (user_id, field_id, value) VALUES (NEW.user_id, NEW.field_id, NEW.value);
    END;
$$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

为什么会出现此错误?这不像是涉及任何繁重的查询.还要注意,数据库几乎是空的,只有2行,community_fields_values而且没有行user_field_log

MySQL版本:5.1.44

mysql triggers

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

如何检测Jquery中div的长按?

我想在用户按下2 secondsdiv 时执行某些功能.

可能吗 ?

这是我的代码,用于检测div上的点击

$('div').mousedown(function() {

});
Run Code Online (Sandbox Code Playgroud)

jquery triggers

28
推荐指数
2
解决办法
3万
查看次数

如何在jQuery触发器上运行回调函数("click")?

我需要在回调中触发一个自定义事件trigger,但我无法让它工作.

我试过这个:

var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);

function runtests () {
    console.log("clicked the input");
};
$input.trigger('click', runtests()); 
Run Code Online (Sandbox Code Playgroud)

还有这个:

var $input = $( ".ui-popup-container" ).find( "input" ).eq(2);
$input.trigger('click', function(){
    console.log("clicked the input");
}
Run Code Online (Sandbox Code Playgroud)

两者都不奏效.

问题:
如何在触发元素单击时运行回调函数?

javascript jquery events triggers callback

28
推荐指数
4
解决办法
8万
查看次数

SQL事务已陷入僵局

有时我会在非常繁忙的SQL服务器上遇到这种异常:

Transaction (Process ID 57) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Line number: 1
Error Number: 1205
Procedure: 
Server name: P01
Error Source: .Net SqlClient Data Provider
Error State: 47
Run Code Online (Sandbox Code Playgroud)

我无法重现它.我试图同时从不同的客户端运行几个查询,但它没有显示出来.在程序内部或内部触发器中发生此类问题的最佳方法是什么?我的意思是,如何重新运行交易?

当从触发器调用的过程内发生异常时如何做到这一点,这是由某些过程所做的插入调用的(即:procedure01 - > insert - > trigger - > procedure02!)

sql-server triggers stored-procedures exception

27
推荐指数
2
解决办法
8万
查看次数