Cambiar estructura a una tabla?
Posted:
Fri Dec 02, 2022 5:58 pm
by Armando
Estimados foreros:
Necesito hacer una función que desde dentro de mi aplicación, en Harbour, ADO y FW, poder
modificar la estructura de una tabla de MySql, agregando campo nuevos, eliminando campos,
cambiando el nombre, tamaño y tipo de campo, etc etc. poder cambiar el nombre de la tabla,
todo esto respetando el contenido.
Con objeto de no inventar el agua caliente, alguien que lo haya hecho y pueda darme una idea?,
será bien agradecida.
Saludos
Re: Cambiar estructura a una tabla?
Posted:
Fri Dec 02, 2022 9:44 pm
by cmsoft
Armando, no uso ADO, pero intuyo que debe ser muy similar a Dolphin o la clase nativa
Tendrías que ejecutar una sentencia SQL para alterar la tabla
Ejemplo:
- Code: Select all Expand view
//Para cambiar campos de nombre y agregar campos
oServer:Execute("ALTER TABLE `test`.`tempor` CHANGE `codigo` `codigo_anterior` BIGINT(13) DEFAULT 0 NOT NULL, ADD COLUMN `nuevocampo` INT(10) NOT NULL AFTER `logico`")
//Para renombrar la tabla
oServer:Execute('RENAME TABLE `test`.`tempor` TO `test`.`tempor_nue`")
Mientras tenga permiso el usuario con que accedes a la base, no tendrás problemas
Re: Cambiar estructura a una tabla?
Posted:
Sat Dec 03, 2022 12:31 am
by Armando
César:
Muchas gracias, le voy a tirar un ojo.
Saludos
Re: Cambiar estructura a una tabla?
Posted:
Sat Dec 03, 2022 1:13 pm
by leandro
Amigo yo lo hago de la siguiente manera:
- Code: Select all Expand view
cQry := "SELECT * FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = '"+mibasedatos+"'"+;
" AND TABLE_NAME = '"+mitabla+"' AND COLUMN_NAME = 'll_resolu'"
oRsPag := FW_OPENRECORDSET(oCnx,cQry,adLockOptimistic,adOpenKeyset)
nRegistros := oRsPag:RecordCount()
oRsPag:close()
If nRegistros==0
cQuery := "ALTER TABLE "+mitabla+" ADD ll_resolu VARCHAR(250) DEFAULT '' AFTER ll_fcfeop"
TRY
oCnx:Execute(cQuery)
lBien := .T.
CATCH oError
FW_ShowAdoError(oCnx)
lBien := .F.
END
endif
Re: Cambiar estructura a una tabla?
Posted:
Sat Dec 03, 2022 5:12 pm
by Armando
Leandro y amigos:
Muchas gracias por los ejemplos.
Saludos