2
私はそれに多くの時間を費やしましたが、それでも解決できません。MySQLでトリガーが間違っているのはなぜですか?
いくつかの理由で私はデータベースにいくつかの同じ挿入を防止したい。だから、私はトリガを使用することを選択します。つまり、
CREATE TRIGGER trigger_card_usage_insert_block
BEFORE INSERT ON annual_card_usage_log
FOR EACH ROW
BEGIN
DECLARE lasttime INT; -- hold the last insert time
SELECT
usage_time INTO lasttime
FROM
annual_card_usage_log
WHERE
NEW.card_id = card_id
AND NEW.mch_id = mch_id
AND NEW.store_id = store_id
ORDER BY
usage_time DESC
LIMIT 1;
-- only insert when after 300 second
IF(
lasttime != NULL
AND(lasttime + 300 < new.usagetime)
) THEN
INSERT INTO annual_card_usage_log(
card_id ,
mch_id ,
store_id ,
usage_time
)
VALUES
(
NEW.card_id ,
NEW.mch_id ,
NEW.store_id ,
NEW.usage_time
);
END
IF;
END$
これは作成コードです。そして、以下はテーブル、
CREATE TABLE `annual_card_usage_log` (
`usage_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`card_id` int(10) unsigned NOT NULL COMMENT '',
`mch_id` int(10) unsigned NOT NULL COMMENT '',
`store_id` int(10) DEFAULT NULL,
`usage_time` int(10) NOT NULL COMMENT '',
PRIMARY KEY (`usage_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
私はトリガーを作成することはできません、それは間違っているようです。なぜか教えてくれますか?どのコードが間違っているか。
私はSequel Proという名前のMySQLクライアントを使用していますが、SQLを実行するとエラーメッセージが表示されます。「SQL構文にエラーがあります。使用する正しいMySQLサーバーバージョンに対応するマニュアルを確認してください。近くの ''行6で実行が停止しました!」私は今や理由はありません。
*トリガーを作成できません。* - 正確にはなぜですか? – anatol
@anatol Sequel Proと呼ばれるmysqlクライアントを使用しています.SQLを実行すると、「SQL構文にエラーがあります。近い構文を使用するためにはMySQLサーバーのバージョンに対応するマニュアルをチェックしてください'' at line 6 実行が停止しました! "私は今や理由はありません。 – blackdog
それは役に立つ情報です、あなたの質問に追加してください – anatol