MySQL Forums
Forum List  »  Newbie

Is FOR EACH ROW required in MySQL Triggers
Posted by: Wendy Kempter
Date: June 09, 2011 10:52AM

I need to write some triggers for a MySQL database and was wondering if MySQL requires the FOR EACH ROW syntax in a trigger definition. For example can I do the following

delimiter $$
DROP TRIGGER IF EXISTS gdmdb.UpdateAdvertiser;
$$
CREATE TRIGGER gdmdb.UpdateAdvertiser AFTER UPDATE ON gdmdb.Advertiser
BEGIN
DELETE ChangeTracker FROM ChangeTracker Inner Join NEW ON
ChangeTracker.TableName = 'Advertiser' AND ChangeTracker.PrimaryKeyID = NEW.GDMAdvertiserID;
INSERT INTO ChangeTracker (TableName, PrimaryKeyID, ChangeType)
SELECT 'Advertiser', NEW.GDMAdvertiserID, 'UPDATE' FROM NEW;
END;
$$

Instead of...

DROP TRIGGER IF EXISTS gdmdb.UpdateAdvertiser;
$$
CREATE TRIGGER gdmdb.UpdateAdvertiser AFTER UPDATE ON gdmdb.Advertiser
FOR EACH ROW BEGIN
DELETE FROM ChangeTracker WHERE TableName = 'Advertiser' AND PrimaryKeyID = NEW.GDMAdvertiserID;
INSERT INTO ChangeTracker (TableName, PrimaryKeyID, ChangeType)
VALUES ('Advertiser', NEW.GDMAdvertiserID, 'UPDATE' );
END;
$$


The first trigger should be more efficient than the second, however MySQL does not seem to like not having FOR EACH ROW in the definition.

Options: ReplyQuote


Subject
Written By
Posted
Is FOR EACH ROW required in MySQL Triggers
June 09, 2011 10:52AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.