It appears to be a simple enough error message. Here is your trigger you are reffering quite explicitly to credits.enabled:
> select SUM(credits.amount) into total_credits from credits where > credits.enabled=1 and account=new.account; and this table has no such column defined. debits does, but not this one > CREATE TABLE `credits` ( > `account` int(11) NOT NULL, > `date` timestamp NOT NULL default CURRENT_TIMESTAMP, > `line_number` int(10) unsigned NOT NULL auto_increment, > `amount` int(11) NOT NULL default '0', > `product_code` int(11) NOT NULL default '0', > `rep_id` int(11) NOT NULL default '0', > `description` text collate utf8_bin NOT NULL, > PRIMARY KEY (`line_number`) > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ; - michael dykman On Sat, Oct 17, 2009 at 2:20 PM, Dan Saul <daniel.s...@gmail.com> wrote: > This is the first time I have attempted to expand beyond basic sql for > storing data in a table like structure. So my level of knowledge is > "familiar with basic SQL, but lacking in expanded knowledge". I expect my > error is a newbie mistake. > > I have attempted to create a trigger to update another table with the > calculated balance of two columns in two different tables. Monetary amounts > are stored in integer form so $6.59 would be represented as 659. The goal > here is to move more of the funtionality into SQL where the data can "manage > itself" and away from application code. > > The following trigger inserts fine, however upon adding a row to the > "trigger-enabled table" it recieves an error. The row inserts fine as can be > proved by selecting the table afterwards, but the trigger operation did not > complete. > * > The following is my trigger:* > > > create trigger billing.update_account_balance after insert on billing.debits > for each row > begin > declare total_debits int; > declare total_credits int; > declare total_balance int; > > select SUM(debits.amount) into total_debits from debits where > debits.enabled=1 and account=new.account; > select SUM(credits.amount) into total_credits from credits where > credits.enabled=1 and account=new.account; > > set total_balance = total_credits - total_debits; > > update accounts set accounts.balance = total_balance where > number=new.account; > end > > *The following is the error as described by PHPMyAdmin:* > > *SQL query:* > > INSERT INTO `billing`.`debits` ( `account` , > `date` , > `line_number` , > `amount` , > `product_code` , > `rep_id` , > `description` , > `enabled` > ) > VALUES ( '1', '2009-10-04 13:05:14', NULL , '91', '3', '1', 'Service / > Support', '1' > ) > > *MySQL said:* > #1054 - Unknown column 'credits.enabled' in 'where clause' > > *The following is my database structure exported by PHPMyAdmin:* > > CREATE TABLE `accounts` ( > `number` int(10) unsigned NOT NULL auto_increment, > `balance` int(11) NOT NULL default '0', > PRIMARY KEY (`number`) > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=2 ; > > CREATE TABLE `credits` ( > `account` int(11) NOT NULL, > `date` timestamp NOT NULL default CURRENT_TIMESTAMP, > `line_number` int(10) unsigned NOT NULL auto_increment, > `amount` int(11) NOT NULL default '0', > `product_code` int(11) NOT NULL default '0', > `rep_id` int(11) NOT NULL default '0', > `description` text collate utf8_bin NOT NULL, > PRIMARY KEY (`line_number`) > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1 ; > > CREATE TABLE `debits` ( > `account` int(11) NOT NULL, > `date` timestamp NOT NULL default CURRENT_TIMESTAMP, > `line_number` int(10) unsigned NOT NULL auto_increment, > `amount` int(11) NOT NULL default '0', > `product_code` int(11) NOT NULL default '0', > `rep_id` int(11) NOT NULL default '0', > `description` text collate utf8_bin NOT NULL, > `enabled` tinyint(1) NOT NULL default '1', > PRIMARY KEY (`line_number`) > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=9 ; > > DROP TRIGGER IF EXISTS `billing`.`update_account_balance`; > DELIMITER // > CREATE TRIGGER `billing`.`update_account_balance` AFTER INSERT ON > `billing`.`debits` > FOR EACH ROW begin > declare total_debits int; > declare total_credits int; > declare total_balance int; > > select SUM(debits.amount) into total_debits from debits where > debits.enabled=1 and account=new.account; > select SUM(credits.amount) into total_credits from credits where > credits.enabled=1 and account=new.account; > > set total_balance = total_credits - total_debits; > > update accounts set accounts.balance = total_balance where > number=new.account; > end > // > DELIMITER ; > > CREATE TABLE `products` ( > `id` int(11) NOT NULL auto_increment, > `description` text collate utf8_bin NOT NULL, > `daily_charge` int(11) NOT NULL default '0', > PRIMARY KEY (`id`) > ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=4 ; > > > Thank you in advance. > > Dan > -- - michael dykman - mdyk...@gmail.com "May you live every day of your life." Jonathan Swift -- - michael dykman - mdyk...@gmail.com "May you live every day of your life." Jonathan Swift -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/mysql?unsub=arch...@jab.org