Last active
January 19, 2019 23:04
-
-
Save egormkn/ec07c4271e5011c822c2c958a7f4cd94 to your computer and use it in GitHub Desktop.
Trigger
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE OR REPLACE FUNCTION check_group() RETURNS TRIGGER AS | |
$BODY$ | |
DECLARE | |
group_count integer; | |
musician_count integer; | |
BEGIN | |
SELECT COUNT(*) FROM artist | |
WHERE artist.id = NEW."groupId" AND is_group = TRUE | |
LIMIT 1 | |
INTO group_count; | |
IF (group_count = 0) THEN | |
RAISE EXCEPTION 'Please, use group for membership record'; | |
RETURN OLD; | |
END IF; | |
SELECT COUNT(*) FROM artist | |
WHERE artist.id = NEW."musicianId" AND is_group = FALSE | |
LIMIT 1 | |
INTO musician_count; | |
IF (musician_count = 0) THEN | |
RAISE EXCEPTION 'Please, use musician for membership record'; | |
RETURN OLD; | |
END IF; | |
RETURN NEW; | |
END; | |
$BODY$ LANGUAGE plpgsql; | |
CREATE TRIGGER check_group | |
BEFORE INSERT OR UPDATE ON membership | |
FOR EACH ROW EXECUTE PROCEDURE check_group(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment