【问题标题】:Automatically Update Field on table自动更新表上的字段
【发布时间】:2015-03-07 08:59:48
【问题描述】:

我在表 X 中有字段 endTime 和状态

我想在每次执行查询时检查 endTime 值

SELECT * FROM X

如果endTime value == Current时间则自动update status = 1

执行选择查询后不需要。以任何其他方式。关键是我想在 endTime = 当前时间时更新状态 = 1。 你能给我一个例子如何在触发器上制作它吗?我是新手

【问题讨论】:

  • 告诉我们更多关于您要解决的问题 - 也许触发器不是正确的方法。
  • 关键是我想在 endTime = 当前时间时自动更新 status = 1。就是这样。
  • 你说想要一个select语句来触发更新,什么会触发select语句?
  • select *from x where status = 0;所以我想在它还没有结束时显示所有数据租用。为了使其准确,我认为最好的方法是在选择之前做一些事情。所以我问如何在执行 select 语句时自动更新,这就是为什么我需要让它自动更新。如果用户必须重新加载页面,效率不高。
  • 在获取页面数据之前让更新语句更改值怎么样?

标签: sql triggers conditional


【解决方案1】:

can i launch a trigger on select statement in mysql?

看起来简短的回答是您不能触发选择。

【讨论】:

  • 那么,我应该怎么做最好呢?
  • 执行选择查询后不需要。关键是我想在 endTime == 当前时间时更新 status = 1。以任何方式。
  • 您甚至不应该拥有具有该功能的状态字段。就在您查询表的任何时候,在您的查询中创建一个作为该函数的列。因此,例如,选择 (endTime
【解决方案2】:

试试这个..

CREATE TRIGGER upd_check BEFORE UPDATE ON account
FOR EACH ROW
BEGIN
IF NEW.amount < 0 THEN
SET NEW.amount = 0;
ELSEIF NEW.amount > 100 THEN
SET NEW.amount = 100;
END IF;
END;

参考:http://dev.mysql.com/doc/refman/5.6/en/trigger-syntax.html http://dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html

【讨论】:

    【解决方案3】:

    如果我们不真正了解您要解决的问题,我们很难为您提供帮助……这有点摸不着头脑,但是如何

    Update tablename
    set status = 1 
    where TimeInColumn = ThisTime
    

    【讨论】:

    • 其实我想做一个实时应用。就像租东西一样。当结束时间 = 当前时间。然后自动状态 = 1。感谢您的示例,但是,如果只是这样,我已经知道了。我的问题是如何让它自动改变。
    猜你喜欢
    • 1970-01-01
    • 2021-09-21
    • 2012-03-09
    • 1970-01-01
    • 2014-12-07
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    相关资源
    最近更新 更多