根据另一个表中的更改自动更新数据库行

时间:2013-04-13 06:30:35

标签: mysql database triggers phpmyadmin

我有一个场景,只要在另一个表中添加或删除行时,就需要自动更新表行中的值。我不知道怎么做.BTW我正在使用phpmyadmin来管理我的数据库。提前谢谢。

pages Table
------------
page_no
no_of_choices

choices Table
-------------
page_no
choice_no

当我添加选项编号1和page_no的选项时,应该使用no_of_choices = no_of_choices + 1

更新具有行page_no = 1的表页面

2 个答案:

答案 0 :(得分:1)

您可以使用触发器。

例如:

CREATE TRIGGER `test1` 
AFTER INSERT ON `tbl1`
FOR EACH ROW SET NEW.upd_fld =  new_value

同样可以删除。

您还可以从phpMyAdmin

创建触发器

答案 1 :(得分:0)

表A:page_no,no_of_choices 表B:page_no,choice_no ...

使用关系数据库,您很少需要重复数据。如果某些内容在某些时候中断,您将不知道应该信任哪些 - 表B中的行,或表A中的no_of_choices。更好的解决方案是执行以下操作之一(取决于您要查询的表):< / p>

SELECT COUNT(no_of_choices) FROM B WHERE page_no = 1

SELECT A.*, COUNT(choice_no) AS choice_no FROM A LEFT JOIN B USING(page_no)

你得到相同的结果,但现在你有一条记录要离开,所以你不会有不一致的数据。