У меня есть Perl-скрипт, который вызывает процедуру сохранения в MySQL.Хранимая процедура очень проста: она проверяет, существует ли запись, и обновляет ее, если она существует.Если запись не существует, она создаст ее.Основной код выглядит следующим образом:
DELIMITER $$
CREATE DEFINER=`me`@`%` PROCEDURE `updateClientUsage`(IN inDate DATE, IN inPort SMALLINT(4), IN inOwner VARCHAR(255), IN inName VARCHAR(255), IN inEmailed TINYINT(1))
BEGIN
IF EXISTS(SELECT * FROM client_usage WHERE port = inPort AND name = inName) THEN
UPDATE client_usage SET date = inDate, emailed = '0' WHERE port = inPort AND name = inName;
ELSE
INSERT INTO client_usage (date, port, owner, name, emailed)
VALUES (inDate, inPort, inOwner, inName, inEmailed);
END IF;
END
Когда я запускаю свой скрипт, он работает нормально, пока эта процедура не попытается обновить запись, которая начинается с подчеркивания (поле имени начинается с подчеркивания).Я получаю сообщение об ошибке, что есть повторяющаяся запись.Кто-нибудь знает, почему это так?