MySQL - 是否可以有条件地运行查询?

时间:2015-10-01 16:24:29

标签: mysql

我想知道是否有可能在MySQL中有条件地运行某些语句。像这样:

IF EXISTS (SELECT * FROM information_schema.columns WHERE TABLE_NAME = 'test_table' AND COLUMN_NAME = 'userid' AND IS_NULLABLE = 'NO') 
THEN
    ALTER TABLE test_table MODIFY userid INT(11) NULL;
END IF;

我做了一些googleing并且我没有提起任何有用或理智的东西。想知道我是否遗漏了某些东西,或者这只是一个严重的MySQL限制。

1 个答案:

答案 0 :(得分:0)

感谢William_Wilson,这是我的工作查询。我仍然认为这完全是倒退,但我认为这是MySQL如何滚动......

delimiter //
create procedure update_stuff() 

    begin
    IF EXISTS (SELECT * FROM information_schema.columns WHERE TABLE_NAME = 'test_table' AND COLUMN_NAME = 'userid' AND IS_NULLABLE = 'NO')
    THEN
        ALTER TABLE test_table MODIFY userid INT(11) NULL;
    END IF;

END
//

delimiter ;

-- Execute the procedure
call update_stuff();

-- Drop the procedure
drop procedure update_stuff;