siyoung 发表于 2013-1-28 14:32:13

工作笔记--Mysql触发器使用示例

更新IDC_Device_Info表记录时,记录下修改的时间,存到Device_Last_Modify表中。
DROP TRIGGER IF EXISTS deviceLastUpdate;CREATE TRIGGER deviceLastUpdateAFTER UPDATE ON `IDC_Device_Info`FOR EACH ROWBEGINBEGINDECLARE cntOld TINYINT DEFAULT 0;DECLARE serviceIdOld INT DEFAULT 0;DECLARE deviceTypeOld INT DEFAULT 0;SET serviceIdOld = IFNULL(OLD.Service_ID,0);SET deviceTypeOld = IFNULL(OLD.Device_Type,0);SELECT COUNT(*) INTO cntOld FROM Device_Last_Modify WHERE Service_ID = serviceIdOld AND Device_Type = deviceTypeOld;IF cntOld > 0 THENUPDATE Device_Last_Modify SET Last_Modify = UNIX_TIMESTAMP(NOW()) WHERE Service_ID = serviceIdOld AND Device_Type = deviceTypeOld;ELSEINSERT INTO Device_Last_Modify VALUES (serviceIdOld, deviceTypeOld, UNIX_TIMESTAMP(NOW()));END IF;END;BEGINDECLARE cntNew TINYINT DEFAULT 0;DECLARE serviceIdNew INT DEFAULT 0;DECLARE deviceTypeNew INT DEFAULT 0;SET serviceIdNew = IFNULL(NEW.Service_ID,0);SET deviceTypeNew = IFNULL(NEW.Device_Type,0);SELECT COUNT(*) INTO cntNew FROM Device_Last_Modify WHERE Service_ID = serviceIdNew AND Device_Type = deviceTypeNew;IF cntNew > 0 THENUPDATE Device_Last_Modify SET Last_Modify = UNIX_TIMESTAMP(NOW()) WHERE Service_ID = serviceIdNew AND Device_Type = deviceTypeNew;ELSEINSERT INTO Device_Last_Modify VALUES (serviceIdNew, deviceTypeNew, UNIX_TIMESTAMP(NOW()));END IF;END;END;
页: [1]
查看完整版本: 工作笔记--Mysql触发器使用示例