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しないとどうなりますか?つまり、デフォルトの*データ型は何ですか? –