小编use*_*672的帖子

级联删除不触发触发器

我转向 postgresql 的原因之一是(与 mysql 不同)外键操作(例如级联删除)可以触发触发器。

在我的数据库中,我有表“penalty_kicks”,其中外键引用“player_instance”:

ALTER TABLE penalty_kicks ADD FOREIGN KEY (kicker_id) REFERENCES player_instance (id) ON DELETE CASCADE;
Run Code Online (Sandbox Code Playgroud)

我知道,当我删除一个player_instance时,惩罚_踢的每个关联行都会被删除。

我还有一个触发器函数,如果删除penalty_kicks 行,那么它将更改“scores”行:

CREATE TRIGGER delete_penalty_kicks AFTER DELETE ON penalty_kicks FOR EACH ROW EXECUTE PROCEDURE delete_kicks();

CREATE FUNCTION delete_kicks()
RETURNS trigger AS $temp$
BEGIN

    UPDATE scores s
    SET    points = points -3
    FROM   player_instance pi
    WHERE  pi.id = OLD.kicker_id
    AND    s.match_id = pi.match_id 
    AND    s.team_id  = pi.team_id 
    AND    OLD.success;         
RETURN NULL;         

END;
$temp$
LANGUAGE 'plpgsql';
Run Code Online (Sandbox Code Playgroud)

(非常感谢另一位用户的上述内容)

我知道这是有效的,因为当我删除penalty_kicks 的行时,它将在得分上执行正确的操作。

但是,当我删除player_instance时,它只会删除penalty_kick(通过级联),而不会触发触发器来改变分数。

有任何想法吗?

谢谢

mysql postgresql

5
推荐指数
0
解决办法
1062
查看次数

在删除级联不触发触发器

我有一个名为“player_instance”的表,然后是一个名为“penalties”的表(它有一个引用 player_instance 的外键)。我还有一个叫做“分数”的表格。

我有一个关于惩罚的 DELETE TRIGGER,这样如果删除一行,它就会改变分数中的一列。我知道这是有效的 - 当一个惩罚被删除时,它会减少分数列。

我还有一个 ON DELETE CASCADE,如果 player_instance 被删除,那么所有相关的惩罚也将被删除。我知道这也有效。

但是当 player_instance 被删除时,它只会删除相关的惩罚,而不会触发改变分数的触发器。谁能帮助我理解为什么这不起作用?

非常感谢

mysql

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

.click()不处理特定索引

我正在创建一个动态菜单,我可以在其中添加和删除新表单.

<input type="button" value="generate form" id="test"/>
<div id="form1"></div>

<script>
$(document).ready(function() {
    $("#test").click(function() {    
        $("#form1").append("<select id='score-attempt'><option value='penalty'>penalty</option></select><input type='button' value='remove' id='remove'/><br>");
    }); 

    $("#form1 #remove").click(function() {    
        alert($(this).index());
    });
});
Run Code Online (Sandbox Code Playgroud)

问题是单击删除永远不会触发警告框.

谢谢

html javascript jquery

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

标签 统计

mysql ×2

html ×1

javascript ×1

jquery ×1

postgresql ×1