Hello Listies, Given: MySQL 4.0.12, I need to implement a pageview log with a resolution of 1 day.
I propose this table: CREATE TABLE `pageviews` ( `id` int(11) NOT NULL auto_increment, `date` date NOT NULL default '0000-00-00', `url` char(120) NOT NULL default '', `views` mediumint(9) NOT NULL default '0', PRIMARY KEY (`id`), UNIQUE KEY `date` (`date`,`url`), KEY `url` (`url`) ) TYPE=InnoDB; So that an update will look like: > UPDATE pageviews SET views=views+1 WHERE date='<DATE>' AND url='<ARTIST>' Of course I need to INSERT the record if one does not match my WHERE. This would be easy if I had 4.1 -- "INSERT ... ON DUPLICATE KEY UPDATE", I think -- but I do not. So, how should I write my queries so that when a new day dawns, I don't have 2 connections racing to INSERT? I suspect I could do something like this (in PHP, line numbers added: 01 $link = connect2Db(); 02 $sql = "SELECT * FROM pageviews WHERE date='<DATE>' AND url='<ARTIST>' LOCK IN SHARE MODE"; 03 if ( mysql_num_rows(mysql_query($sql,$link)) ) { 04 // UPDATE 05 } else { 06 // INSERT 07 } Also, should I explicitly "mysql_query('COMMIT',$link)" on line 8? Thanks all! -- wellington -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]