Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-10-2011
jangel_ramirezm jangel_ramirezm is offline
Miembro
 
Registrado: ago 2007
Ubicación: León Gto. Mex.
Posts: 39
Poder: 0
jangel_ramirezm Va por buen camino
Crear columna identity con valores especificos de un campo

Hola muy buenos dias

antes que nada gracias por tomarse el tiempo de leer este hilo

la duda es la siguiente: Debo de cambiar una columna int a int identity, de una tabla en una DB sqlserver 2005, he estado leyendo y eso no se puede hay que hacer una serie de cosas como crear otra tabla identica, copiar los valores, borrar y renombrar , para no hacer todo eso me dijeron que podia agregar una columna a la misma tabla con la propiedad identity, y que a esa le asiganara el valor del campo int, para despues remover la columna int y la identity renombrarla, la cosa es que cuando agrego la columna identity me genera los valores y no me permite hacerle un update,
¿como hacer que al momento de crear la columna le asigne el valor de la otra?

he probado con algo asi:
Código SQL [-]
  alter table Tabla
  add id_aux int identity (1,1) not null

  SET IDENTITY_INSERT tabla off

  update tabla
  set id_aux = id

pero me dice que no se puede actualizar la columna id_aux, alguna idea de como hacer esto?

Saludos y gracias de nuevo
Responder Con Cita
  #2  
Antiguo 20-10-2011
Avatar de javier7ar
javier7ar javier7ar is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 124
Poder: 19
javier7ar Va por buen camino
la razon por la que no te deja modificar la columna es porque estas usando al reves SET IDENTITY_INSERT
deberia ser asi:

Código SQL [-]
SET IDENTITY_INSERT tabla ON

/* ... haces las actualizaciones de la columna identity ... */

SET IDENTITY_INSERT tabla OFF
Responder Con Cita
  #3  
Antiguo 20-10-2011
jangel_ramirezm jangel_ramirezm is offline
Miembro
 
Registrado: ago 2007
Ubicación: León Gto. Mex.
Posts: 39
Poder: 0
jangel_ramirezm Va por buen camino
Hola
gracias por responder
ya lo revisé poniendo en
Código SQL [-]
SET IDENTITY_INSERT tabla ON

pero aún sigue marcando error, por lo que estuve viendo, las columnas identity no se
pueden modificar, solo habilitar la insercion de identidad con la sentencia anterior, creo
que tendré que crear la tabla auxiliar, copiar los datos, borrar la anterior y renombrar la nueva.
aunque tendré que hacer un respaldo antes para mayor seguridad..

Gracias.
Saludos.
Responder Con Cita
  #4  
Antiguo 20-10-2011
Avatar de javier7ar
javier7ar javier7ar is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 124
Poder: 19
javier7ar Va por buen camino
Cita:
Empezado por jangel_ramirezm Ver Mensaje
... creo que tendré que crear la tabla auxiliar, copiar los datos, borrar la anterior y renombrar la nueva...
eso es lo que hace el adminsitrador corporativo cuando pones como identity una columna ya existente (trabajas con SQL Server por lo que veo, no?) lo cual me sugiere la trivial pregunta..

por que no lo cambias sobre el mismo campo que ya tenes? es ir al diseño de la tabla, pararse sobre el campo, setear la propiedad identity y dejar que el administrador corporativo haga el trabajo sucion...

Saludos

P/D:
si haces un
Código SQL [-]
 SET IDENTITY_INSERT tabla ON
tenes que hacer un
Código SQL [-]
 SET IDENTITY_INSERT tabla OFF
cuando terminas para que no te quede activado
Responder Con Cita
  #5  
Antiguo 21-10-2011
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Lo que puedes hacer es con el SQL Server Management Studio Express es cambiar Especificación de identidad al Valor y después lo grabas, esto funciona por que he realizado hace un momento.

Un saludo
Responder Con Cita
  #6  
Antiguo 01-11-2011
jangel_ramirezm jangel_ramirezm is offline
Miembro
 
Registrado: ago 2007
Ubicación: León Gto. Mex.
Posts: 39
Poder: 0
jangel_ramirezm Va por buen camino
Muchas gracias por sus respuestas

al final tuve que hacer todo el proceso de crear una tabla identica y copiar los valores pero ahora con el campo ID como identity,
ya que el SQLserver 2005 tiene deshabilitada la funcion de cambiar la propiedad identity a las columnas

Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Resetear el autoincremental del campo Identity BlueSteel SQL 7 29-11-2011 20:03:23
meter los valores de una columna en un combobox marareta SQL 2 19-07-2010 19:47:11
Problema con campo identity Luis Cuenca SQL 7 04-02-2009 16:10:54
problemas con campo identity ingmichel SQL 2 20-01-2009 23:43:08
Sumar valores de una columna en mysql coletaun Varios 1 08-01-2006 22:05:48


La franja horaria es GMT +2. Ahora son las 16:49:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi