Otro campo como valor por defecto

14/04/2007 - 18:52 por Daniel Álvarez | Informe spam
Hola,

Estoy creando una tabla nueva y me ha surgido una duda que igual es
elemental pero no he conseguido hacerlo y no se si se puede

Simplemente quiero tener un campo en la tabla, este campo quiero que tenga
como valor por defecto el valor que toma el autonumerico de la misma tabla.

Hasta ahora en estas situaciones, lo que hacia era poner valor por defecto 0
y cuando hago un insert luego tomo el valor que ha tomado el autonumerico
para terminar haciendo un update del registro,... funciona bien, pero quería
saber si existe la posibilidad comentada antes, o algo mejor para hacer esto
que quiero.

Muchas gracias

Daniel Alvarez

Preguntas similare

Leer las respuestas

#1 Jose Mariano Alvarez
14/04/2007 - 23:28 | Informe spam
En el post <#,
DIJO .
asta ahora en estas situaciones, lo que hacia era poner valor por defecto 0
y cuando hago un insert luego tomo el valor que ha tomado el autonumerico
para terminar haciendo un update del registro,... funciona bien, pero quería
saber si existe la posibilidad comentada antes, o algo mejor para hacer esto
que quiero.






Pero si es asi, tienes dos columnas iguales.
No te sirve usar el autonumerico de esa tabla (columna con la propiedad
identity)?

Para que usas funcionalmente el autonumerico?



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)


IMPORTANTE

Por favor traten de indicar la versión de SQL y Service Pack.
La inclusión de (CREATE, INSERTS, etc.) para poder reproducir el
problema también ayuda.
Respuesta Responder a este mensaje
#2 Daniel Álvarez
15/04/2007 - 21:49 | Informe spam
Hola Jose Mariano,

No puedo usar el autonumerico, dado que el segundo campo que digo que como
valor toma inicialmente el del autonumerico, más adelante será modificado
por otro valor (y no en todo los casos) es decir si yo tengo estos dos
campos:

id asociadoA
1 1
2 2
3 3

Segun el sistema que estamos montando ese segundo campo puede cambiar los
valores y pasar a ser:

id asociadoA
1 1
2 1
3 3

Gracias



"Jose Mariano Alvarez"
escribió en el
mensaje news:
En el post <#,
DIJO .
asta ahora en estas situaciones, lo que hacia era poner valor por defecto
0
y cuando hago un insert luego tomo el valor que ha tomado el autonumerico
para terminar haciendo un update del registro,... funciona bien, pero
quería
saber si existe la posibilidad comentada antes, o algo mejor para hacer
esto
que quiero.






Pero si es asi, tienes dos columnas iguales.
No te sirve usar el autonumerico de esa tabla (columna con la propiedad
identity)?

Para que usas funcionalmente el autonumerico?



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)


IMPORTANTE

Por favor traten de indicar la versión de SQL y Service Pack.
La inclusión de (CREATE, INSERTS, etc.) para poder reproducir el
problema también ayuda.
Respuesta Responder a este mensaje
#3 Javier Loria
16/04/2007 - 01:06 | Informe spam
Hola Daniel:
Hay 2 alternativas mas que puedes considerar:
1) En el INSERT que estas haciendo reemplazar el 0 por:
== INSERT MiTabla (...)
VALUES((SELECT COALESCE(MAX(Valor), 0)+1 FROM TABLA)
, )
==2) Tener una table "TakeANumb" o "TomeUnNumero" que tiene el siguiente valor
y lo actualice en la misma transaccion.
BEGIN TRAN
UPDATE TomeUnNumero
SET @Siguiente=Siguiente=Siguiente+1
WHERE Tabla='MiTabla'
INSERT MiTabla (...)
VALUES(@Siguiente, )
COMMIT
Espero te sirva,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


"Daniel Álvarez" wrote in message
news:%
Hola,

Estoy creando una tabla nueva y me ha surgido una duda que igual es
elemental pero no he conseguido hacerlo y no se si se puede

Simplemente quiero tener un campo en la tabla, este campo quiero que tenga
como valor por defecto el valor que toma el autonumerico de la misma
tabla.

Hasta ahora en estas situaciones, lo que hacia era poner valor por defecto
0 y cuando hago un insert luego tomo el valor que ha tomado el
autonumerico para terminar haciendo un update del registro,... funciona
bien, pero quería saber si existe la posibilidad comentada antes, o algo
mejor para hacer esto que quiero.

Muchas gracias

Daniel Alvarez


Respuesta Responder a este mensaje
#4 Daniel Álvarez
16/04/2007 - 12:17 | Informe spam
Ola Javier no habia pensado en la opcion de hacer un Insert con la select y
para este caso me vale perfectamente.

gracias

"Javier Loria" escribió en el mensaje
news:
Hola Daniel:
Hay 2 alternativas mas que puedes considerar:
1) En el INSERT que estas haciendo reemplazar el 0 por:
==> INSERT MiTabla (...)
VALUES((SELECT COALESCE(MAX(Valor), 0)+1 FROM TABLA)
, )
==> 2) Tener una table "TakeANumb" o "TomeUnNumero" que tiene el siguiente
valor y lo actualice en la misma transaccion.
> BEGIN TRAN
UPDATE TomeUnNumero
SET @Siguiente=Siguiente=Siguiente+1
WHERE Tabla='MiTabla'
INSERT MiTabla (...)
VALUES(@Siguiente, )
COMMIT
> Espero te sirva,


Javier Loria
Costa Rica (MVP)
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.


"Daniel Álvarez" wrote in message
news:%
Hola,

Estoy creando una tabla nueva y me ha surgido una duda que igual es
elemental pero no he conseguido hacerlo y no se si se puede

Simplemente quiero tener un campo en la tabla, este campo quiero que
tenga como valor por defecto el valor que toma el autonumerico de la
misma tabla.

Hasta ahora en estas situaciones, lo que hacia era poner valor por
defecto 0 y cuando hago un insert luego tomo el valor que ha tomado el
autonumerico para terminar haciendo un update del registro,... funciona
bien, pero quería saber si existe la posibilidad comentada antes, o algo
mejor para hacer esto que quiero.

Muchas gracias

Daniel Alvarez





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida