On 26/02/15 14:42, david wrote:
MySql Gurus

This may be the wrong mailing list for this question, so I apologize in advance 
for breaking some rule.

I'm trying to get a trigger to work.  My environment is a Perl DBI interface to 
a MySql database on Centos 6.  I use the InnoDB database.

I have two tables involved in this operation:

table:  House, with fields:
   HouseID INT AUTO_INCREMENT
   PeopleCount INT
   <other fields not relevant to this discussion>



Table:  People, with fields
   PeopleID INT AUTO_INCREMENT
   HouseID INT  (shows which house the person belongs to)
   Name VARCHAR(30)
   <other fields not relevant to this discussion

Whenever I insert (or delete) a row to the People table, I want the PeopleCount 
in the House (identified by the HouseID in the people table) to be incremented 
or decremented.

My latest attempt is a trigger:

CREATE TRIGGER after_insert_people AFTER INSERT ON People FOR EACH ROW
  BEGIN
   UPDATE House SET PeopleCount = PeopleCount + 1 WHERE HouseID = 
People.HouseID;
  END

I don't use mysql these days but in Oracle that would be something like "where 
houseid = :new.houseid".

The trigger gets "triggered", but a diagnostic says that "People.HouseID" is an 
undefined column.

Any clues would help.

Thanks
David

I would actually suggest you don't use a trigger for this and also that you 
don't store the count of people in a house in a column in the house table. You 
can always calculate how many people there are in a house but if you use 
triggers or some other mechanism to keep the count you run the risk of the 
count not actually agreeing with the rows with that house id. In other words, I 
think this is generally bad design.

Martin

Reply via email to