Id Unico

23/04/2007 - 20:57 por news.microsoft.com | Informe spam
Hola grupo:

Existe alguna forma de generar un id unico en toda la base de datos. Es
decir, un autonumerico que se vaya incrementando, pero no solo en cierta
tabla, sino en toda la base.
Saludos.

Preguntas similare

Leer las respuestas

#1 Jose Mariano Alvarez
24/04/2007 - 03:46 | Informe spam
En el post ,
DIJO .
Hola grupo:

Existe alguna forma de generar un id unico en toda la base de datos. Es
decir, un autonumerico que se vaya incrementando, pero no solo en cierta
tabla, sino en toda la base.
Saludos.





Las columnas identity son para numerar consecutivamente una tabla y no
para toda la base. No tienen garantia de consecutividad ante errores.

Para que lo vas a usar?




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 Salvador Ramos
24/04/2007 - 10:12 | Informe spam
Hola,

Eso no es posible hacerlo, salvo que lo desarrolles tu mismo. Puedes crear
una tabla con una columna contador, y que de ahí vayan leyendo e
incrementando el valor de dicha columna. Así cada vez que insertes una fila
deberás leer el valor de dicha columna, utilizarlo en la fila que estás
insertando e incrementarlo en 1.

Ahora, creo que sería conveniente que nos explicases la situación y por qué
quieres generar esa numeración única para toda la base de datos. Así
podremos darte alternativas.

Un saludo
Salvador Ramos
-
www.sqlserverymicrosoft.net (información sobre SQL Server y .Net)
www.sqlserverymicrosoft.net/acerca_de_salvador_ramos.htm
[SQL Server MVP]
-

"news.microsoft.com" escribió en el mensaje
news:
Hola grupo:

Existe alguna forma de generar un id unico en toda la base de datos. Es
decir, un autonumerico que se vaya incrementando, pero no solo en cierta
tabla, sino en toda la base.
Saludos.


Respuesta Responder a este mensaje
#3 Javier Loria
24/04/2007 - 17:55 | Informe spam
Hola:
ID unico, puedes usar GUID, pero no es autoincrementable. Los GUID
puedes ponerlos en una columna uniqueidentifier y con la funcion NEWID() los
llenas ya se con defaults o con triggers dependiendo del caso. La mejor
ventaja de los GUID es que funcionan en ambientes distribuidos, o sea
multiples servidores generan GUIDs diferentes!!!.
Otra opcion es usar una columna Timestamp que es autoincrementable por
la base de datos, se le da mantenimiento sola (no requiere default, ni
triggers), se representa hexadecimalmente y es 8 bytes de largo. Un ejemplo:
CREATE TABLE Demo (
PKDemo INT PRIMARY KEY
, Col1 INT NOT NULL
, timestamp);

INSERT Demo(PKDemo, Col1)
VALUES(1,1)
INSERT Demo(PKDemo, Col1)
VALUES(2,1)
SELECT * FROM Demo
UPDATE Demo
SET Col1=2
WHERE PKDemo=1
SELECT * FROM Demo
Los timestamp no tienen nada que ver con el tiempo, son consecutivos
por base de datos que se autoincrementan por cada insert o update.
Si nos cuentas que quieres hacer, y no como quieres hacerlo, tal vez
podemos ayudarte mas.
Saludos,


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.

"news.microsoft.com" wrote in message
news:
Hola grupo:

Existe alguna forma de generar un id unico en toda la base de datos. Es
decir, un autonumerico que se vaya incrementando, pero no solo en cierta
tabla, sino en toda la base.
Saludos.


Respuesta Responder a este mensaje
#4 news.microsoft.com
24/04/2007 - 17:56 | Informe spam
ok.

Tengo varias tablas (Facturas, remitos, compras, etc) cuyos registro
"moverian stock".
Me gustaria poder saber el orden en que fueron creados los registros para
luego hacer una consulta que los una en cierto orden. Si todos los
movimientos estuvieran en la misma tabla lo solucionaria con un Id en esa
tabla. Pero en este caso son varias las tablas.
Se me ocurrio también que podria hacerlo con una columna donde guerde el
horario en que se genero el registro. Pero hago esta pregunta para poder
conocer todas la posibilidades y despues tomar una decisión.

Saludos.

"Salvador Ramos" escribió en el
mensaje news:
Hola,

Eso no es posible hacerlo, salvo que lo desarrolles tu mismo. Puedes crear
una tabla con una columna contador, y que de ahí vayan leyendo e
incrementando el valor de dicha columna. Así cada vez que insertes una


fila
deberás leer el valor de dicha columna, utilizarlo en la fila que estás
insertando e incrementarlo en 1.

Ahora, creo que sería conveniente que nos explicases la situación y por


qué
quieres generar esa numeración única para toda la base de datos. Así
podremos darte alternativas.

Un saludo
Salvador Ramos
-
www.sqlserverymicrosoft.net (información sobre SQL Server y .Net)
www.sqlserverymicrosoft.net/acerca_de_salvador_ramos.htm
[SQL Server MVP]
-

"news.microsoft.com" escribió en el mensaje
news:
> Hola grupo:
>
> Existe alguna forma de generar un id unico en toda la base de datos. Es
> decir, un autonumerico que se vaya incrementando, pero no solo en cierta
> tabla, sino en toda la base.
> Saludos.
>
>


Respuesta Responder a este mensaje
#5 Salvador Ramos
24/04/2007 - 18:15 | Informe spam
Hola,

Cuando dices en qué orden, supongo que te refieres a ordern cronológico. En
eses caso yo añadiría una columna smalldatetime (4 bytes, si no fuese
suficiente su precisión utiliza datetime) con un default getdate() y
ordenaría por ella el informe que indicas. Si quieres tener un autonumérico
utilizado en varias tablas implicaría optar por una solución como la que
comenté más arriba, con el consiguiente incremento de tiempo de la
transacción y de bloqueos.

Un saludo
Salvador Ramos
-
www.sqlserverymicrosoft.net (información sobre SQL Server y .Net)
www.sqlserverymicrosoft.net/acerca_de_salvador_ramos.htm
[SQL Server MVP]
-

"news.microsoft.com" escribió en el mensaje
news:e%
ok.

Tengo varias tablas (Facturas, remitos, compras, etc) cuyos registro
"moverian stock".
Me gustaria poder saber el orden en que fueron creados los registros para
luego hacer una consulta que los una en cierto orden. Si todos los
movimientos estuvieran en la misma tabla lo solucionaria con un Id en esa
tabla. Pero en este caso son varias las tablas.
Se me ocurrio también que podria hacerlo con una columna donde guerde el
horario en que se genero el registro. Pero hago esta pregunta para poder
conocer todas la posibilidades y despues tomar una decisión.

Saludos.

"Salvador Ramos" escribió en el
mensaje news:
Hola,

Eso no es posible hacerlo, salvo que lo desarrolles tu mismo. Puedes
crear
una tabla con una columna contador, y que de ahí vayan leyendo e
incrementando el valor de dicha columna. Así cada vez que insertes una


fila
deberás leer el valor de dicha columna, utilizarlo en la fila que estás
insertando e incrementarlo en 1.

Ahora, creo que sería conveniente que nos explicases la situación y por


qué
quieres generar esa numeración única para toda la base de datos. Así
podremos darte alternativas.

Un saludo
Salvador Ramos
-
www.sqlserverymicrosoft.net (información sobre SQL Server y .Net)
www.sqlserverymicrosoft.net/acerca_de_salvador_ramos.htm
[SQL Server MVP]
-

"news.microsoft.com" escribió en el mensaje
news:
> Hola grupo:
>
> Existe alguna forma de generar un id unico en toda la base de datos. Es
> decir, un autonumerico que se vaya incrementando, pero no solo en
> cierta
> tabla, sino en toda la base.
> Saludos.
>
>






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida