使用 Least() 赋值

Assign a value using Least()

我在触发器内使用循环来更新 MySQL 数据库中的层次关系。表是创新的。

我有的是:

SET vDateCounter = NEW.DateTime;

问题是这只在一半的时间内有效。如果更新包括更新的日期时间,我的循环开始但它不会重新处理 OLD.DateTime,也不会重新处理 OLD.DateTime 和 NEW.DateTime 之间的任何事件。

例如,如果我将“2015-04-20 06:00:00”更改为“2015-04-20 18:00:00”,我希望我的更新循环始终从两个日期时间。

我想做的是:

SET vDateCounter = (SELECT LEAST(OLD.DateTime, NEW.DateTime));

对最佳方法有什么想法吗?

您可以使用函数并从触发器调用。

CREATE FUNCTION [dbo].[FN_Least] 
(
@date1 datetime,
@date2 datetime
)
RETURNS datetime
AS
BEGIN
DECLARE @vDateCounter  datetime

 SELECT @vDateCounter= min(dateLeast)  
 FROM ( 
      SELECT @date1 AS dateLeast
      UNION ALL
      SELECT @date2 AS dateLeast
      ) AS dates
      RETURN @vDateCounter
END

在你的触发器中,select它。

SELECT dbo.FN_Least('2015-04-21 06:00:00','2015-04-20 18:00:00')