Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Cambiar nombre de tabla

Estas en el tema de Cambiar nombre de tabla en el foro de SQL Server en Foros del Web. Hola amigos ojala alguien me pueda ayudar, quisiera saber como puedo cambiar el nombre de una tabla, sabiendo que hay un trigger que actualiza, borra ...
  #1 (permalink)  
Antiguo 16/10/2010, 16:32
 
Fecha de Ingreso: octubre-2010
Mensajes: 2
Antigüedad: 13 años, 6 meses
Puntos: 0
Cambiar nombre de tabla

Hola amigos ojala alguien me pueda ayudar, quisiera saber como puedo cambiar el nombre de una tabla, sabiendo que hay un trigger que actualiza, borra o inserta datos esta tabla.. Como puedo hacer para hacer q el trigger actue sobre la tabla a la que le he cambiado el nombre....
  #2 (permalink)  
Antiguo 17/10/2010, 08:00
 
Fecha de Ingreso: diciembre-2003
Mensajes: 141
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Cambiar nombre de tabla

Hola luisvp59,

No estoy seguro si hay algún SP o orden para hacerlo automático, pero yo probaría algún script con los siguientes pasos:

- deshabilitar (o eliminar el trigger) que afecta a la tabla
- modificar el nombre de la tabla
- habilitar el trigger (o crearlo de nuevo) pero con el nuevo nombre de tabla

Otra opción sería:

- Crear una tabla con misma estructura y nuevo nombre
- Traspasar datos a la nueva tabla
- Crear trigger para la nueva tabla (y deshabilitar el antiguo)

Bueno, quizá alguién tenga una manera más práctica.

Saludos,
  #3 (permalink)  
Antiguo 18/10/2010, 11:55
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Cambiar nombre de tabla

SP_RENAME, leer en su ayuda en linea.
__________________
MCTS Isaias Islas
  #4 (permalink)  
Antiguo 18/10/2010, 12:25
 
Fecha de Ingreso: diciembre-2003
Mensajes: 141
Antigüedad: 20 años, 4 meses
Puntos: 0
Respuesta: Cambiar nombre de tabla

Hola iislas,

Pero si no entendí mal, SP_RENAME no modifica los nombres de las tablas en los desencadenadores, etc... Deben ser eliminados y creados de nuevo, no?

Cita:
Al cambiar el nombre de un objeto como una tabla o columna, no se cambia automáticamente el nombre de las referencias a ese objeto. Es necesario modificar de forma manual los objetos que hacen referencia al objeto cuyo nombre se ha cambiado. Por ejemplo, si se cambia el nombre de una columna de una tabla y en un desencadenador existe una referencia a esa columna, es necesario modificar el desencadenador para reflejar el nuevo nombre de la columna. Utilice sys.sql_expression_dependencies para ver las dependencias del objeto antes de cambiarle el nombre.
Saludos,
  #5 (permalink)  
Antiguo 18/10/2010, 14:00
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Cambiar nombre de tabla

Es correcto, NeoZ, incluso, se deben RE-COMPILAR los procedimientos asociados a la tabla en cuestion. Por eso mi recomendacion de utilizar la ayuda en linea:

sp_rename automatically renames the associated index whenever a PRIMARY KEY or UNIQUE constraint is renamed. If a renamed index is tied to a PRIMARY KEY constraint, the primary key is also automatically renamed by sp_rename.

Important After renaming stored procedures and views, flush the procedure cache to ensure all dependent stored procedures and views are recompiled.

Renaming a stored procedure, view or trigger will not change the name of the corresponding object name in the syscomments table. This may result in problems generating a script for the object as the old name will be inserted from the syscomments table into the CREATE statement. For best results, do not rename these object types. Instead, drop and re-create the object by its new name.
__________________
MCTS Isaias Islas

Etiquetas: nombre, tablas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:49.