0

私は一般的にMySQLトリガーとプロシージャコードに非常に慣れていないので、これはおそらく私の愚かな間違いです. 動作していないコードは次のとおりです。

CREATE TRIGGER add_to_cart
AFTER INSERT ON orders
FOR EACH ROW
BEGIN

SET @status = ‘S’;
SET @user = NEW.user_id;
SET @order = NEW.order_id;

SELECT count(*) INTO @shipped_count 
FROM orders
**WHERE (user_id = @user) AND (order_status = @status);**

SELECT MAX(priority) INTO @max FROM cart;

IF @max = 'NULL' THEN

SET @max = 0;

END IF;

SET @priority = @max + 1;

INSERT INTO cart VALUES (@user, @order, @priority);
**INSERT INTO log VALUES (@count, @user);**

END $$

SELECT count(*) INTO shiped_count に WHERE 句を含めるまで、トリガーは期待どおりに機能します。orders テーブルのすべてのレコードを数えることはできますが、特定のタイプのレコードを指定しようとすると機能しません。

また、太字の「INSERT INTO ログ」も何らかの理由で失敗しますが、そのすぐ上の INSERT ではまったく同じ構文が機能します。

ヘルプ!ありがとう。私は無知です。

4

1 に答える 1

0

交換してみてください:

SET @status = ‘S’;

と:

SET @status = 'S';

丸められた一重引用符ではなく、通常の一重引用符に注意してください。

于 2012-08-04T22:38:20.037 に答える