1
INFORMATION_SCHEMA提供了访问数据库元数据的方式。
元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。
具体可已参考在线mysq api文档 : http://tool.oschina.net/apidocs/apidoc?api=mysql-5.1-zh
然后 COLUMNS表的 表示的是 表中的列信息
根据以上知识 修改一个表的列的备注 :
修改example 表points_rule,nights_rule 的备注
DELIMITER $$
SET sql_notes = 0$$
DROP PROCEDURE IF EXISTS `example`$$
CREATE PROCEDURE `example`()
SQL SECURITY INVOKER # added by mode utility
BEGIN
-- 修改example 表points_rule,nights_rule 的备注
IF NOT EXISTS(SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='example'
AND COLUMN_NAME='points_rule' AND COLUMN_COMMENT='心学最不同于其他儒学者,在于其强调生命的过程') THEN
ALTER TABLE card_auto_up_down_grade MODIFY COLUMN points_rule CHAR(4) COMMENT '心学最不同于其他儒学者,在于其强调生命的过程';
END IF;
IF NOT EXISTS(SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='example'
AND COLUMN_NAME='nights_rule' AND COLUMN_COMMENT='好多人认为心学是空谈,实在是被歪曲的太厉害了,举一个简单的例子') THEN
ALTER TABLE card_auto_up_down_grade MODIFY COLUMN nights_rule CHAR(4) COMMENT '好多人认为心学是空谈,实在是被歪曲的太厉害了,举一个简单的例子';
END IF;
END$$
DELIMITER ;
CALL example();
DROP PROCEDURE IF EXISTS `example`;