MySql IF оператор в запросе - PullRequest
0 голосов
/ 26 марта 2011

Я только что закончил поднимать челюсть с пола, узнав, что вы не можете использовать оператор IF в запросе в MySql. Как кто-нибудь может сделать что-нибудь без заявления IF?!

Я пытаюсь написать сценарий DML, который добавляет ограничение к таблице, если ее не существует. Как то так:

if (select count(*) from information_schema.table_constraints
    where constraint_name='fk_user_user_status') = 0
then
    alter table `user`
        add constraint fk_user_user_status foreign key (status_id)
            references user_status(id);
end if;

Как можно это сделать в MySql?

Заранее спасибо!

Ответы [ 2 ]

3 голосов
/ 26 марта 2011

Вы можете выполнять операторы IF только в хранимых процедурах и функциях.

http://dev.mysql.com/doc/refman/5.0/en/if-statement.html

Если вы выполняете стандартные сценарии, операторы IF работают только с запросами SELECT.

http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html#function_if

2 голосов
/ 26 марта 2011

Процедурный пакет, но в пределах ниже, процесс создан и удален после завершения операции.

delimiter $$

drop procedure if exists tmp_add_fk $$

create procedure tmp_add_fk()
begin
if (select count(*) from information_schema.table_constraints
    where constraint_name='fk_user_user_status') = 0
then
    alter table `user`
        add constraint fk_user_user_status foreign key (status_id)
            references user_status(id);
end if;
end$$

delimiter ;

call tmp_add_fk;

drop procedure tmp_add_fk;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...