0
現在我正面臨着mysql觸發器中的一些問題,因爲我對它很陌生。針對mysql觸發器進行計算
其實我有兩個表名爲app_form
和和venue_master
。現在的問題是,當我插入到表app_form
我不得不從venue_master
表計算venue
和更新app_form
與價值。 現在在場地計算過程中,我必須從場館主數據中提取數據,並將其放入while
循環(如mysql_qurey和mysql_fetch_assoc概念),並比較一些值,最後獲取場地。
那麼語法是什麼?什麼是邏輯? codes..please檢查
請幫助...
大量的研究後,我已經寫的排序是確定或not..where我有邏輯的問題..
DELIMITER $$
DROP TRIGGER IF EXISTS before_form_insert $$
CREATE TRIGGER before_form_insert
BEFORE INSERT ON `app_form`
FOR EACH ROW
BEGIN
LOCK TABLES app_form WRITE;
DECLARE done INT DEFAULT FALSE;
DECLARE vId, vCap, cnt, cntTotal, admit_no, venue, venueName INT;
DECLARE vName, r1, r2, roll VARCHAR(250);
DECLARE cur1 CURSOR FOR SELECT `venue_id` , `venue_capacity` FROM venue_master ORDER BY venue_id ASC;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
OPEN cur1;
read_loop: LOOP
FETCH cur1 INTO vId, vCap;
IF done THEN
LEAVE read_loop;
END IF;
SET cnt = (SELECT count(*) FROM app_form WHERE status=1 AND venuename=vId);
IF cnt < vCap THEN
SET cntTotal = (SELECT count(*) FROM app_form WHERE status=1);
SET admit_no = (cntTotal + 1);
SELECT venue_name INTO vName FROM venue_master WHERE venue_id = vId;
SET venue = vId;
SET venueName = vName;
SET r1=UPPER(SUBSTRING(vName,1,4));
SET r2=LPAD(admit_no, 5, 0);
SET roll=CONCAT(r1,'2015',r2);
LEAVE read_loop;
END IF;
END LOOP;
CLOSE cur1;
SET NEW.admit_no=admit_no, NEW.roll_no=roll, NEW.venuename=venue, NEW.venue_name=venueName;
UNLOCK TABLES;
END $$;
DELIMITER ;
我知道這個邏輯和語法...但我必須這樣做,在觸發未在PHP網頁.. – 2015-02-07 07:27:33