php – 如果属于同一个外部ID的所有多行具有相同的值,则MYSQL会
我有3张桌子:时间表和地点,套房.
计划的结构:schedule-id,location-id,schedule-completed-on-date 地点的结构:location-id,location-building-number,location-street-name 套房的结构:套房ID,位置ID,套房号码,套房参观 许多套房可能属于同一地点. Schedule的location-id是唯一的,因此任何时候可能只有一个唯一的位置,没有重复. 我想将schedule-completed-date-on设置为一个日期,我知道该怎么做,如果一个日程表行的位置的每个套件都有套件访问等于1(0-否,1-是). 是否可以使用MySQL,如果可以,那么如何?或者我是否必须使用服务器端语言以编程方式执行此操作? 例如,如果我有两个位置 – 1个主街和2个主街 – 总共10个套房 – 5个属于第一个位置,其他5个属于第二个位置.如果MySQL检测到与第一个位置相关的所有5个套件行的套件访问量等于1,则立即将schedule-completed-on设置为当前日期,否则不会. 手头的数据和期望的结果: LOCATIONS location-id location-building-number location-street-name 1 1 Main St. 2 2 Main St. SUITES suite-id location-id suite-number suite-visited 1 1 100 1 2 1 200 0 3 1 300 0 4 1 400 0 5 1 500 1 6 2 1000 1 7 2 1100 1 8 2 1200 1 9 2 1300 1 10 2 1400 1 SCHEDULE schedule-id location-id schedule-completed-on-date 1 1 NULL 2 2 7/3/2015 00:00:00 // because all suites for location 2 have suite-visited set to 1 // second row under SCHEDULE gets the date set // because all suites belonging to // location 2 have been visited 解决方法
基于套件访问表的更新触发SCHEDULE的自动更新,适当地命名触发器.
DELIMITER $$ CREATE TRIGGER trigger_name AFTER UPDATE ON suite-visited FOR EACH ROW BEGIN IF NOT EXISTS (select 1 from SUITES where suite-visited = 0 and location-id = new.location-id) THEN UPDATE SCHEDULE set schedule-completed-on-date = curdate() where location-id = new.location-id; END IF; END; $$ DELIMITER ; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |