2015-02-07 97 views
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 ;

回答

0

如果您只需要計算您的餐桌包含多少場所。您可以添加計數查詢並將$ value插入到您的app_form值中。

$value = mysql_query('select count from venue') ; 


or if you need to get some value from the venue 

$query = mysql_query('select * count from venue') ; 

while ($r = mysql_fetch_array($query)){ 

    if($r['somevalue'] = $othervalue) { 
     //perform your operation // eg insert ur app-form data 
    } 

} 

我只是告訴你的邏輯語法可能是錯誤的,所以請固定

+0

我知道這個邏輯和語法...但我必須這樣做,在觸發未在PHP網頁.. – 2015-02-07 07:27:33