作成しようとしている MySQL トリガーがありますが、正しい構文を取得できません。
トリガーが通過し、データベースに挿入された新しい投稿のタイトルに対して一連のキーワードを照合する必要があります。一致が見つかった場合、新しい投稿をそのバケットに割り当て、バケットのキーワード セットを更新する必要があります。一致が見つからない場合は、投稿の値を使用して新しいバケットを作成する必要があります。エラーは IF EXISTS で始まる行を指していますが、何が問題なのかわかりません。どんな助けでも大歓迎です。ありがとう!
更新: IF EXISTS を引き出すようにコードが更新されましたが、ELSE ステートメントからエラーが発生しています。
delimiter $$
CREATE TRIGGER bucket_trigger_v1 BEFORE INSERT ON posts
FOR EACH ROW
BEGIN
set @target = NEW.post_title;
set @bucket_id_number = '';
set @bucket_relevance = '';
SELECT idbuckets, MATCH (keywords) AGAINST (@target) AS score INTO @bucket_id_number, @bucket_relevance FROM buckets WHERE MATCH (keywords) AGAINST (@target) ORDER BY score DESC LIMIT 1;
IF (@bucket_id_number != '') THEN
BEGIN
SET NEW.buckets_idbuckets = @bucket_id_number;
UPDATE buckets SET keywords = concat(keywords, @target) WHERE idbuckets = @bucket_id_number;
END
ELSE
BEGIN
INSERT INTO buckets (idbuckets, keywords, creationdate) VALUES (, @target, NEW.postdate);
SET NEW.bucket_idbuckets = (SELECT LAST_INSERT_ID());
END
END IF;
END;
$$