0
我有一個查詢(觸發)這樣的:如何將查詢結果存儲到變量中並多次使用?
BEGIN
IF (new.edited_id IS NULL) THEN
IF (SELECT 1 FROM users WHERE id = new.author_id AND IFNULL((active & b'1000000' > 0), 0) < 1) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "you cannot ask anymore";
ELSEIF (SELECT 1 FROM users WHERE id = new.author_id AND IFNULL((active & b'10000000' > 0), 0) < 1) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "you cannot answer anymore";
END IF;
ELSE
IF (SELECT 1 FROM users WHERE id = new.author_id AND IFNULL((active & b'100000000' > 0), 0) < 1) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "you cannot edit anymore";
END IF;
END
正如你看到的,這些內部IF
語句的條件幾乎相同。那麼我該如何改進呢?
我的意思是,我怎麼可以存儲下面的查詢到一個變量的結果:
SELECT active FROM users WHERE id = new.author_id;
,然後用它爲這樣的那些條件:
IF (IFNULL((@variable & b'1000000' > 0), 0) < 1) THEN
IF (IFNULL((@variable & b'10000000' > 0), 0) < 1) THEN
IF (IFNULL((@variable & b'100000000' > 0), 0) < 1) THEN
我該如何處理呢?
'active'是'BIT(10)'數據類型。 –
我改變了數據類型。 –
謝謝.. upvote ..只是爲了我的信息,如果你不'DECLARE'變量和'SET'它什麼?我的意思是什麼是默認*數據類型*? –