我想知道是否有可能在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限制。
答案 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;