2012-11-23 98 views
2

我知道有这种说法ON UPDATE,有没有一种方法可以用它在我的数据库中创建一个列,当这个值改变时,另一个预定义的值被设置为0? 在此先感谢。当值更新时更改值

例:

id | value | type 
1  2  5 
2  4  6 
3  7  8 

如果我更新的第一行的价值,我想类型automaticaly设置为0。

+0

我不知道有这个问题。请提供示例输入和预期结果以及相关示例数据 – ariefbayu

+0

您可以在更新后使用SQL的触发器功能,将每个新的行集类型归零。 – Jivan

回答

2

您需要创建获取每次行被更改执行的触发,例如:

CREATE TRIGGER auto_update_type BEFORE UPDATE 
ON your_table_name 
FOR EACH ROW BEGIN 

    if NEW.value <> OLD.value THEN 
     SET NEW.type = 0; 
    END IF; 
END; 

这之后,每次你做查询:

UPDATE table_name SET value = '10' WHERE id = 1; 

如果值是不同的,旧的一个,触发将被执行和类型将被设置为0

下面是如何从phpMyAdmin的设置触发:

enter image description here

0

一个解决方案,你可以这样做只是用PHP的帮助码。

首先,只要你的更新函数/动作被触发,那么也要更新类型值。

+0

好吧,所以没有SQL方法来做到这一点...? – Weacked

+0

也可能在sql中,即在更新第一个值时也会将类型更新为0 – Suleman

0

删除您的PHP脚本中的所有对insert,updatedelete的访问。只需使用存储过程。这样数据库可以照顾自己并保持自己的一致性。

相关问题