Eliminación de una columna de una tabla

Estoy recuperando una tabla de la cual quiero eliminar una de sus columnas. Mediante la sentencia SQL "DROP CONSTRAINT <nombre_PK>" elimino la clave primaria ya que la columna que deseo eliminar es clave primaria. Luego, cuando intento eliminar la columna me da error y supongo que es debido a que la columna ademas de ser PORQUE también es índice. ¿Alguien sabe como puedo eliminar los índices de una tabla sin conocer el nombre del índice? Yo he probado con el método de ADO OpenShema y la propiedad adSchemaIndexes, pero no ma ha servido :-(

1 respuesta

Respuesta
1
Para saber el nombre de un indice, tenés que ir al query analizer, y ejecutar: por ej:
Use Northind (Catalogo o Base)
Exec sp_helpindex Customers (Tabla)
Ahí te tira todos los índices que contiene la tabla
Luego con DROP INDEX Tabla. Indice
Lo dropeas
LO podés hacer tb desdee tu app ejecutando el sp, tenés más información tb sobre como saber los índices de una tabla mirando el script de ese stored procedure
Gracias Andrés por tu rapidez, pero lo que tu me comentas no me es posible ya que mi aplicación cuando es ejecutada debe recuperar el indice mediante código y sólo dispone del nombre de la BD y de la tabla. Con eso debería ser capaz de recuperar los índices de esa tabla. No se si con mi aclaración podrías sugerir me otra solución.
Gracias de todos modos!
Saludos.
Jordi.
Mmm, ok, dejame resolverlo, y mañana te contesto...
Hola Andrés,
¿Tienes alguna idea? :D
Gracias!
Jordi
Uh disculpá me olvidé de vos, probaste ejecutando el sp como recordset, ¿y de ahí sacando el nombre del indice para eliminarlo?
No te preocupes por el despiste ;-)!
Cuando dices sp te refieres a Stored Procedure? Yo no utilizo SP sino sentencias SQL directamente.
Por lo referente al recordset si que hago uso de él, lo genero a partir de la llamada al método OpenSchema de ADO y la propiedad adSchemaIndexes pero no consigo averiguar cuales son los índices de la tabla. ¿Sabes cómo los puedo recuperar a partir de este recordset?
Gracias!
Jordi.
El sp al que me refería es sp_helpindex que te tira los índices de una taba, y lo que decía es que uses conexión. Execute "exec sp_helpIndex tabla" en vez de openschema
Probá y decime
Creo que esto que me has pasado me podría servir con SQLServer pero mi aplicación está atacando a Access y MySQL. Lo he probado con Access y como me temía no funciona por que no indentifica la expresión 'sp_helpIndex'.
Gracias de todos modos! ¿Alguna otra sugerencia? :D
Jordi.
Ahh con razón tantos problemas, jejej, estás usando mysql
Ese sp es válidos para sql server, yo interpreté erróneamente que lo estabas utilizando.
De ahí la razón también que no te funciona el adschemaindexes (¿supongo?)
Lamentablemtente mi experiencia con mysql se reduce a instalarlo, ver sus enormes limitaciones (transacciones, triggers, funciones- por lo menos en la versión que yo utulizé no estaban, no se ahora-) y lo desinstalé, y seguí con mi viejo y querido MS Sql Server...
Por esta razón creo que ya no te puedo ser de utilidad.
Buscá en google mysql y adschemaindexes, capaz que comentan algún problema y su posible solución...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas