fabiez Posted March 21, 2014 Share Posted March 21, 2014 I'm trying to create a trigger that checks intries in a table. CREATE TRIGGER check_stored_stars BEFORE INSERT ON stored_stars FOR EACH ROW BEGIN IF NEW.user_id = OLD.user_id AND NEW.star_id = OLD.star_id ELSE INSERT INTO stored_stars(user_id, star_id) VALUES(NEW.user_id, NEW.star_id); END IF; END; But I get an error saying: #1363 - There is no OLD row in on INSERT trigger How do I solve this? Quote Link to comment https://forums.phpfreaks.com/topic/287139-create-a-trigger-that-checks-intries-in-a-table/ Share on other sites More sharing options...
ginerjm Posted March 21, 2014 Share Posted March 21, 2014 Looks/sounds like an sql question, not something on a php forum. Quote Link to comment https://forums.phpfreaks.com/topic/287139-create-a-trigger-that-checks-intries-in-a-table/#findComment-1473463 Share on other sites More sharing options...
Solution kicken Posted March 21, 2014 Solution Share Posted March 21, 2014 If you're trying to prevent duplicates on the user_id,star_id combo then just set a UNIQUE constraint on those columns. CREATE UNIQUE INDEX IX_UserStar ON stored_stars (user_id, star_id) The reason for the error is exactly as it says, when you are doing an INSERT query, there is only NEW data, not any OLD data. Quote Link to comment https://forums.phpfreaks.com/topic/287139-create-a-trigger-that-checks-intries-in-a-table/#findComment-1473481 Share on other sites More sharing options...
fabiez Posted March 21, 2014 Author Share Posted March 21, 2014 thanks Quote Link to comment https://forums.phpfreaks.com/topic/287139-create-a-trigger-that-checks-intries-in-a-table/#findComment-1473492 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.