2013-03-15 586 views
1

我想在IF語句中給出兩個條件......下面這兩個觸發器沒有顯示任何語法錯誤,但它們也不工作。if條件中的多個條件在我的sql觸發器

觸發:1:

DROP TRIGGER IF EXISTS forumpostTrigger;

CREATE DEFINER = `livecomm`@`localhost` TRIGGER `forumpostTrigger` AFTER INSERT ON `forum_post` 
FOR EACH 
ROW BEGIN if((

SELECT count(*) 
FROM forum_post 
WHERE uid = new.uid 
AND parent_id IS NOT NULL 
AND is_answer_accepted) >=30 
) 
THEN if((

SELECT sum(vote_count) 
FROM forum_post 
WHERE uid = new.uid 
AND parent_id IS NOT NULL 
AND is_answer_accepted) >=15 
) 
THEN 
INSERT INTO user_badges(uid, bedge_id, is_active) 
VALUES (
new.uid, '10', '1' 
); 

DELETE FROM user_badges WHERE uid = new.uid AND badge_id =9; 

END IF ; 

END IF ; 

END 

觸發:2:

DROP TRIGGER IF EXISTS `forumpostTrigger` ; 

CREATE DEFINER = `livecomm`@`localhost` TRIGGER `forumpostTrigger` AFTER INSERT ON `forum_post` 
FOR EACH 
ROW BEGIN if((
(

SELECT count(*) 
FROM forum_post 
WHERE uid = new.uid 
AND parent_id IS NOT NULL 
AND is_answer_accepted) >=30 
) && (
(

SELECT sum(vote_count) 
FROM forum_post 
WHERE uid = new.uid 
AND parent_id IS NOT NULL 
AND is_answer_accepted 
) >=15 
) 
) 
THEN 
INSERT INTO user_badges(uid, bedge_id, is_active) 
VALUES (
new.uid, '10', '1' 
); 

DELETE FROM user_badges WHERE uid = new.uid AND badge_id =9; 

END IF ; 

END 

如何給多個條件的if語句,如: if ((condition) && (condition))

回答

2
DROP TRIGGER IF EXISTS `forumpostTrigger` ; 

CREATE DEFINER = `livecomm`@`localhost` TRIGGER `forumpostTrigger` AFTER INSERT ON `forum_post` 
FOR EACH 
ROW BEGIN if((

SELECT count(*) 
FROM forum_post 
WHERE uid = new.uid 
AND parent_id IS NOT NULL 
AND is_answer_accepted) =3 
) 
THEN 
INSERT INTO user_badges(uid, badge_id, is_active) 
VALUES (
new.uid, '9', '1' 
); 

END IF ; 

if((
SELECT count(*) 
FROM forum_post 
WHERE uid = new.uid 
AND parent_id IS NOT NULL 
AND is_answer_accepted) =30 
) 
THEN if((

SELECT sum(vote_count) 
FROM forum_post 
WHERE uid = new.uid 
AND parent_id IS NOT NULL 
AND is_answer_accepted) >=15 
) 
THEN 
INSERT INTO user_badges(uid, badge_id, is_active) 
VALUES (
new.uid, '10', '1' 
); 

DELETE FROM user_badges WHERE uid = new.uid AND badge_id =9; 

END IF ; 

END IF ; 

END 
0

你可以用這個語法

IF condition1 
IF condition2 
BEGIN 
.. 
END 
+0

對不起嘗試但是這個也不起作用 – 2013-03-15 14:46:41