如果满足条件,则更新另一个表

时间:2017-04-04 11:59:58

标签: mysql

因为我正在处理一个用于管理元数据的小应用程序,我想知道是否可以在满足条件的情况下在另一个表中插入行。

让我举一个示例:所以,让我们说我们有表ispu_plan

CREATE TABLE `ispu_plan` (
  `id` int(11) NOT NULL,
  `id_jls` int(11) NOT NULL,
  `id_razina_plan` int(11) NOT NULL,
  `id_revizija` int(11) NOT NULL,
  `naziv_plan` varchar(150) NOT NULL,
  `ispu_naziv` varchar(100) NOT NULL,
  `id_mjerilo` int(11) NOT NULL,
  `datum_donosenja_plana` date DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

并且我正在更新表ispu_plan我想更新另一个表(例如ispu_plan_updated),如果ispu_plan中的某些条件与表{{1}中的相同行相符}}

使用此查询:

ispu_plan

我想在表SELECT * FROM ispu_plan WHERE datum_donosenja_plana BETWEEN '2014-01-01' AND CURDATE() 中插入行。这样的事情是可能的,我可以使用视图在ispu_plan_updated中插入行吗?

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用触发器来实现:

DROP TRIGGER IF EXISTS ispu_plan_trigger;

DELIMITER |

CREATE TRIGGER ispu_plan_trigger AFTER UPDATE ON ispu_plan
FOR EACH ROW BEGIN
-- example condition with update:
IF NEW.datum_donosenja_plana >= '2017-01-01' THEN
UPDATE ispu_plan_updated SET naziv_plan = 'some_value' WHERE id = NEW.id
LIMIT 1;
END IF;
END;

DELIMITER ;