MySQL 触发函数(3个不同表之间)

MySQL Trigger Function (between 3 different tables)

我有3张表(写成重要部分,不是全部数据):

tableDeviceStatus:

device_id    status
---------    ------
device01     15
device02     20

tableDeviceTrigger:

device_id    device_operator   device_param   triggered_device   command
---------    ---------------   ------------   ----------------   -------
device01     >                 22             device80           1
device01     <                 18             device87           0
device02     =                 1              device89           1

tableDeviceCommand:

device_id    command
---------    -------
device80 
device87
device89

流量:

例如:

我试过触发器,但无法解决搜索、比较和执行问题。 (因为一个设备可以进行多次比较。我几乎为一行创建了但无法为每一行制定类似的公式并执行)

欢迎来到 Stack Overflow!如果我理解正确,对于在 tableDeviceStatus 中输入的每个新行,您想要在 tableDeviceTrigger.

中使用匹配的 @device_id 测试每一行

对于 tableDeviceTrigger 中的每个匹配行,您测试它是否满足要求 (@status @device_operator @device_param is TRUE)。对于满足这些要求的每一行,您在 tableDeviceCommand 中添加一行 @triggered_device@command.

这样的东西行得通吗?

INSERT INTO tableDeviceCommand (device_id, command)
-- maybe REPLACE INTO or UPDATE depending on your requirements
(
  SELECT tdt.triggered_device, tdt.command
  FROM tableDeviceStatus tds
  INNER JOIN tableDeviceTrigger tdt on tds.device_id = tdt.device_id
  WHERE
    (tdt.device_operator = ">" and tds.status > tdt.device_param) OR
    (tdt.device_operator = "<" and tds.status < tdt.device_param) OR
    (tdt.device_operator = "=" and tds.status = tdt.device_param)
    -- add additional ORs to test the comparison specified by device_operator
)