1

I want to set value using declare on trigger. The trigger is as follow:

CREATE DEFINER=`root`@`localhost` TRIGGER `update_queue_after_insert` AFTER INSERT ON `encounter_note` FOR EACH ROW DECLARE is_exist INT;
  SET is_exist = ( SELECT count(*) FROM practice_last_updated_module WHERE practice_id = NEW.practice_id );

IF NEW.enc_source = 'OP' THEN
UPDATE practice_queue_list PQL SET
PQL.vital_check = IF (NEW.vs_weight <> 0 OR NEW.vs_height <> 0 OR NEW.  vs_temperature <> 0 OR LENGTH(NEW.vs_blood_pressure) > 0 <> NEW.vs_pulse <> 0 OR NEW.vs_respiration <> 0, 1, 0)
WHERE PQL.encounter_id = NEW.id AND PQL.practice_place_id = NEW.practice_id;
END IF;

IF is_exist > 0 THEN
      UPDATE practice_last_updated_module SET encounter = UNIX_TIMESTAMP(NOW()) where practice_id = NEW.practice_id;
ELSE:
    INSERT INTO practice_last_updated_module (practice_id, encounter) VALUES (NEW.practice_id, UNIX_TIMESTAMP(NOW()));
END IF;"

But it returns error on saving

The following query has failed: "CREATE DEFINER=root@localhost TRIGGER update_queue_after_insert AFTER INSERT ON encounter_note FOR EACH ROW DECLARE is_exist INT; SET is_exist = ( SELECT count(*) FROM practice_last_updated_module WHERE

What's wrong with the statement?

1 Answer 1

3

Use 13.6.1 BEGIN ... END Compound-Statement Syntax.

Try (maybe you need to use DELIMITER):

DELIMITER //

CREATE TRIGGER `update_queue_after_insert` AFTER INSERT ON `encounter_note`
FOR EACH ROW
BEGIN -- <- BEGIN
  DECLARE is_exist INT;
  SET is_exist = ( SELECT count(*) FROM practice_last_updated_module WHERE practice_id = NEW.practice_id );

  IF NEW.enc_source = 'OP' THEN
    UPDATE practice_queue_list PQL
    SET PQL.vital_check = IF (NEW.vs_weight <> 0 OR NEW.vs_height <> 0 OR NEW.vs_temperature <> 0 OR LENGTH(NEW.vs_blood_pressure) > 0 <> NEW.vs_pulse <> 0 OR NEW.vs_respiration <> 0, 1, 0)
    WHERE PQL.encounter_id = NEW.id AND PQL.practice_place_id = NEW.practice_id;
  END IF;

  IF is_exist > 0 THEN
    UPDATE practice_last_updated_module SET encounter = UNIX_TIMESTAMP(NOW()) where practice_id = NEW.practice_id;
  -- ELSE:
  ELSE 
    INSERT INTO practice_last_updated_module (practice_id, encounter) VALUES (NEW.practice_id, UNIX_TIMESTAMP(NOW()));
  END IF;
END// -- <- END

DELIMITER ;
Sign up to request clarification or add additional context in comments.

1 Comment

got it, after adding BEGIN and END, it works. thanks

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.