2013-10-26 3 views
0

Я пытаюсь вставить значение, если оно не вставлено, и пытается обновить часть своего поля. Используется только одна переменная. Значение не вставляется, хотя ион вызывает процедуру хранения, он показывает одну строку, вставленную. Пожалуйста, помогите мне, попробовав SP в первый раз.Сохраненная процедура в mysql Не работает

Это моя хранимая процедура

CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertLocation`(in IpAddress varchar(45)) 
BEGIN  
    if (SELECT count(*) as count 
     FROM mbuzzz.location_byhits 
     where IpAddress = IpAddress 
     having count>0)  
    then  
     UPDATE location_byhits SET Hits=Hits+1 where IpAddress=IpAddress;  
    else  
     insert into location_byhits(IpAddress,Date_current) 
     values (IpAddress,CURTIME());  
    End if ;  
end 

ответ

3

Переименовать входной параметр, чтобы понять, к двигателю DB, когда вы имеете в виду параметр и, когда имя столбца.

where IpAddress = IpAddress 

всегда верно, поскольку двигатель считает, что вы сравниваете колонку с самим собой.

Попробуйте

delimiter | 
CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertLocation`(in IpAddrParam varchar(45)) 
BEGIN  
    if ((SELECT count(*) FROM mbuzzz.location_byhits where IpAddress = IpAddrParam)>0)  
    then  
     UPDATE location_byhits SET Hits=Hits+1 where IpAddress=IpAddrParam;  
    else  
     insert into location_byhits(IpAddress,Date_current) 
     values (IpAddrParam, CURTIME());  
    End if ;  
end 
| 
delimiter ; 
+0

Thnx сэр, делает много :) –

+0

Сэр, код работает для вставки новой стоимости, но не в том случае, когда данные уже есть. Значение хитов не увеличивается, есть ли какая-либо возможность –

+0

столбец хитов не вставляет, хотя нет duplica'cy, но значение столбца не обновляется. В случае, если требуется хорошее изменение, любезно помогите мне. –

Смежные вопросы