Я пытаюсь запустить в phpMyAdmin следующий код:
set @tagTokenNum=0;
select @tagTokenNum:=tag_token_id from tag_token where tag_token_name = 'XXX';
delimiter go
if @tagTokenNum is null then
insert into tag_token (tag_token_name) values ('XXX');
select @tagTokenNum:=last_insert_id();
end if;
go
Я также пробовал это без оператора-разделителя и соответствующего go. Я получаю сообщение об ошибке "# 1064 - У вас есть ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL, чтобы выбрать правильный синтаксис рядом с ', если @tagTokenNum имеет значение null, затем вставьте в tag_token ..."
Насколько я могу судить, я следую правильному синтаксису операторов IF в MySql. Я гораздо лучше знаком с Microsoft SQL, поэтому вполне возможно, что я что-то делаю не так. Буду признателен за любую помощь, которую вы можете предложить. Спасибо. - Дэйв






ISTR, который можно использовать только в операторах if в хранимых процедурах, ref: mysql docs ... Блок IF ... END IF, как и все другие блоки управления потоком, используемые в сохраненных программах ....
Однако я думаю, что вы могли бы добиться того же со следующим:
insert into tag_token (tag_token_name) values ('XXX')
ON DUPLICATE KEY UPDATE tag_token_name = tag_token_name;
select @tagTokenNum:=tag_token_id from tag_token where tag_token_name = 'XXX'
Я не проверял обходной путь, но он определенно прав в утверждениях IF ...