公司要求將整個數據庫的varchar或者char的默認值清空,爲減少時間寫了以下存儲過程。
CREATE PROCEDURE `sp_clearchardefaultvalue`() BEGIN DECLARE s_tablename VARCHAR(100); DECLARE s_fieldname VARCHAR(100); /*顯示錶的數據庫中的所有表 SELECT table_name FROM information_schema.tables WHERE table_schema='databasename' Order by table_name ; */ #顯示所有varchar的字段 DECLARE cur_table_structure CURSOR FOR SELECT table_name,column_name FROM INFORMATION_SCHEMA.COLUMNS WHERE table_schema = 'databasename' AND (data_type ='varchar' OR data_type ='char') AND column_default IS NOT NULL ORDER BY table_name; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s_tablename = NULL,s_fieldname=NULL; OPEN cur_table_structure; FETCH cur_table_structure INTO s_tablename,s_fieldname; WHILE ( s_tablename IS NOT NULL) DO SET @MyQuery=CONCAT("alter table `",s_tablename,"` alter column `",s_fieldname,"` drop default"); PREPARE msql FROM @MyQuery; EXECUTE msql ;#USING @c; FETCH cur_table_structure INTO s_tablename,s_fieldname; END WHILE; CLOSE cur_table_structure; END$$
{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null
{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"typ
{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":1}},{"type":"blockquote","content":[{"type":"pa
{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":1}},{"type":"paragraph","attrs":{"indent":0,"nu