Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум веб-мастеров _ Базы данных (MySQL, PostgreSQL, ODBC, ...) _ транзакции

Автор: vladimir 28.11.2007, 14:06

Вот такой вопрос, то что закоментено в коде ниже не скомпилировалось ((
Но мне нужно знать что эта функция будет работать изолированно от других.
Являеться ли по умолчанию функциии и процедуры в MySQL сериализуемыми?
Спасибо.

create FUNCTION toop.f_BuyWord(
_page_id INTEGER(10),
_charFirst INTEGER(10) ,
_charLast INTEGER(10),
_word VARCHar(500),
_project_id INTEGER(10),
_type INTEGER(10))

RETURNS INTEGER(10)

COMMENT 'заводим слово на покупку с проверкой не пересечения слова по символам с существующими словами'

BEGIN
DECLARE numNewWord INTEGER default -1; #-1 - строка не занеслась, иначе номер занесенной строки
DECLARE countIntersect INTEGER default 0; #колличество пересечений по существующим словам


#start transaction;

select count(t.buyWord_id)
INTO countIntersect
FROM tbl_adv_buywords t
WHERE
(_charFirst between t.charFirst and t.charLast or
_charLast between t.charFirst and t.charLast) and
t.page_id=_page_id;

if countIntersect>0 then
#rollback;
return numNewWord;
end if;

INSERT INTO tbl_adv_buywords(
tbl_adv_buywords.charFirst,
tbl_adv_buywords.charLast,
tbl_adv_buywords.page_id,
tbl_adv_buywords.project_id,
tbl_adv_buywords.`type`,
tbl_adv_buywords.word)
values (LAST_, _charLast, _page_id, _project_id, _type, _word);


#commit;
return LAST_INSERT_ID();

END;

Invision Power Board ()
© Invision Power Services ()