Php 自动Mysql更新
一旦达到某个数字,mysql是否可以自动更新表中的字段 我有一个名为Php 自动Mysql更新,php,mysql,triggers,Php,Mysql,Triggers,一旦达到某个数字,mysql是否可以自动更新表中的字段 我有一个名为badges的表,它有以下字段 ID,name,image,level, percent 如果百分比字段达到某个数字(例如50),则级别字段将更新为2 我认为这将是一个触发器?是的,可以用脚本完成,它由服务器自动运行和执行 按照以下步骤操作: 1) 首先,编写一段代码,在数据库字段中显示要更新的内容 2) 为服务器设置cronjob以执行查询本身 你可以做几件事 语法上的 您甚至可以用语法编写它,尽管表中的值没有更改,但只显示
badges
的表,它有以下字段
ID,name,image,level, percent
如果百分比字段达到某个数字(例如50),则级别字段将更新为2
我认为这将是一个触发器?是的,可以用脚本完成,它由服务器自动运行和执行 按照以下步骤操作: 1) 首先,编写一段代码,在数据库字段中显示要更新的内容
2) 为服务器设置cronjob以执行查询本身 你可以做几件事 语法上的 您甚至可以用语法编写它,尽管表中的值没有更改,但只显示其他内容。像这样
SELECT ID,
name,
image,
CASE WHEN percent > 50 THEN 2 ELSE level END AS Level,
percent FROM....
在触发器中
每次插入后,必须计算值,然后进行相应更新。也许是这样的
DELIMITER $$
DROP TRIGGER IF EXISTS databasename.badges_AUPD$$
USE databasename$$
CREATE TRIGGER `badges_AUPD` AFTER UPDATE ON `badges` FOR EACH ROW
// Added this line from Andreas Wederbrands answer which is the correct way
set new.level := case when percent < 50 then 0
when percent < 75 then 1
else 2;
$$
DELIMITER ;
派生值最好在读取而不是存储时进行计算,这样您就可以随时更改阈值
select ID,
name,
image,
case when percent < 50 then 0
when percent < 75 then 1
else 2
as level,
percent
from some_table;
选择ID,
名称
形象,,
当百分比小于50时,则为0
当百分比小于75时,则为1
其他2
作为一级,,
百分比
从某张桌子上;
另一种选择是在触发器中设置level的值
create trigger set_level
before insert on some_table
for each row begin
set new.level := case when percent < 50 then 0
when percent < 75 then 1
else 2;
end
创建触发器集\u级别
在某些表上插入之前
每行开始
设置new.level:=百分比小于50时的情况,然后为0
当百分比小于75时,则为1
其他2项;
结束
更新前对执行相同操作
您不应该在插入/更新一行或几行时重新计算整个表的级别。好的。我知道如何用sql代码更新字段。我不知道当另一个字段到达某个点时如何更新该字段。除此之外,cron的工作似乎很简单。这将非常高效,而且更新不会实时发生:(你说得对极了,我忘了。这会导致每次插入
。Tack sa mycket!出现此错误-在after TRIGGER中不允许更新新行删除刚创建的触发器,并在其上创建相同的触发器,但在插入后使用插入
。你需要在更新后更新
上执行此操作,因为当行是新的且nserted它自动有一个级别值,对吗?没有创建触发器。我是要在SQL选项卡下输入它吗?否,在要创建触发器的表上。Im在数据库的badges表中。
create trigger set_level
before insert on some_table
for each row begin
set new.level := case when percent < 50 then 0
when percent < 75 then 1
else 2;
end