我有一个支持多种语言的数据库。每个需要翻译成其他语言的文本都是链接到我的翻译表的idTranslation。还有一个带有idTranslation的入口表和idLanguage作为包含所有文本的主键。此存储过程用于修改具有idTranslation的任何文本。它首先检查是否已经有一个与新文本匹配的条目,如果没有,它会创建一个idTranslation和匹配的条目并返回idtranslation。
如果我调用它一次就可以正常工作但是只要我在两次调用中用新文本调用它两次它就会两次返回相同的idTranslation ...我在做错了吗?
CREATE DEFINER=`root`@`localhost` PROCEDURE `AjoutEntrySiFieldExiste`(in PentryText varchar(500),in PfieldName varchar(45),in PlanguageCode varchar(5),out PidTranslation int(11))
BEGIN
if PentryText!="" then
Select `idLanguage` into @languageid from language where languageCode=lower(PlanguageCode);
Select `idTranslation` into @idTrans from entry where lower(`Text`) = lower(PentryText) and idLanguage=@languageid;
if @idTrans is null then
Insert Into translation Values(Null,(Select idField from field where lower(`Name`)=lower(PfieldName)));
Set @id = LAST_INSERT_ID();
Set PidTranslation=@id;
Insert Into entry Values(@id,@languageid,PentryText);
else
set PidTranslation=@idTrans;
end if;
SELECT PidTranslation;
end if;
END