在得知您无法在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中执行此操作?
提前致谢!
答案 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;