close
Ultimas Noticias

Características y aplicaciones prácticas de Blockchainleer mas...   Invertir colores con NegativeScreenleer mas...   Cambiar Tipo de las columnas en una base de datosleer mas...   

Cambiar Tipo de las columnas en una base de datos

Nos podemos encontrar que un campo diseñado para un valor excede al final del valor que finalmente debe llevar. O que incluso hemos puesto un tipo de datos diferente o mas pequeño y debemos realizar el cambio.

Si esto es solo en una o dos tablas, no es demasiado problema hacerlo manual.

Si por el contrario, necesitas cambiarlo en varias tablas, este script te puede servir.

Devuelve un resultado, una query con todos los ALTER TABLE necesarios para cambiar un tipo a otro en una base de datos.
CREATE PROCEDURE `changeType`
BEGIN
DECLARE v_done INT DEFAULT 0;
DECLARE v_table VARCHAR(50);
DECLARE v_database VARCHAR(20) DEFAULT '*******';
DECLARE v_column VARCHAR(50);
DECLARE v_length INTEGER(11);
DECLARE v_oldtype VARCHAR(20) DEFAULT 'smallint';
DECLARE v_newtype VARCHAR(20) DEFAULT 'int';
DECLARE v_text TEXT;
DECLARE cursor1 CURSOR FOR SELECT t.TABLE_NAME, t.COLUMN_NAME, substr(t.COLUMN_TYPE,instr(t.COLUMN_TYPE,"(") + 1, instr(t.COLUMN_TYPE,")") - instr(t.COLUMN_TYPE,"(") - 1) longitud
FROM INFORMATION_SCHEMA.COLUMNS t
WHERE t.TABLE_SCHEMA = v_database and t.DATA_TYPE = v_oldtype AND substr(t.COLUMN_TYPE,instr(t.COLUMN_TYPE,"(") + 1, instr(t.COLUMN_TYPE,")") - instr(t.COLUMN_TYPE,"(") - 1) > 1;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_done = 1;
OPEN cursor1;
SET v_text = “”;
myloop: LOOP
FETCH cursor1 INTO v_table, v_column, v_length;
IF v_done = 1 THEN
leave myloop;
END IF;
SET v_text = CONCAT( v_text, ‘ALTER TABLE ‘, v_table, ‘ MODIFY COLUMN ‘, v_column, ‘ ‘ ,v_newtype ,'(‘,v_length,’) UNSIGNED;’);
END LOOP;
SELECT v_text;
END

Etiquetas:

No Comments

Leave a reply

Post your comment
Enter your name
Your e-mail address

Story Page

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies