查询中的MySql IF语句

时间:2011-03-26 08:45:24

标签: mysql constraints

在得知您无法在MySql中的查询中使用IF语句后,我刚刚从地板上拾起我的下巴。如果没有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 个答案:

答案 0 :(得分:3)

您只能在存储过程和函数中运行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

答案 1 :(得分:2)

程序批处理,但在下面,在操作完成后创建并删除proc。

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;