Acerca de campos identity

23/02/2009 - 20:44 por Firefox | Informe spam
Hola si tengo una tabla que ya contiene datos y quiero crearle una
columna identity (necesito replicarla). Como hago para generar un
identificador unico para cada linea si estas ya estaban ahi. Muchas
Gracias por anticipado (^_^)

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
23/02/2009 - 22:10 | Informe spam
Cuando dices replicarla, te refieres a usar el mecanismo de replicacion
existente en SQL Server?

De ser asi, entonces necesitas una columna tipo "uniqueidentifier" y que
este marcada como "rowguidcol", ademas de crear una restriccion de valor por
defecto, que este atachada a esa columna.

Si por lo contrario solo quieres una columna nueva con propiedad "identity",
entonces sql server la llenara por ti, despues de haber sido adocionada.

USE tempdb;
GO

CREATE TABLE dbo.t1 (c1 INT NOT NULL UNIQUE);
GO

INSERT INTO dbo.t1 VALUES(4);
INSERT INTO dbo.t1 VALUES(17);

SELECT *
FROM dbo.t1;
GO

ALTER TABLE dbo.t1
ADD c2 UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL CONSTRAINT DF_t1_c2
DEFAULT(NEWID());
GO

SELECT *
FROM dbo.t1;
GO

ALTER TABLE dbo.t1
ADD c3 INT NOT NULL IDENTITY(1, 1);
GO

SELECT *
FROM dbo.t1;
GO

DROP TABLE dbo.t1;
GO


AMB



"Firefox" wrote:

Hola si tengo una tabla que ya contiene datos y quiero crearle una
columna identity (necesito replicarla). Como hago para generar un
identificador unico para cada linea si estas ya estaban ahi. Muchas
Gracias por anticipado (^_^)

Respuesta Responder a este mensaje
#2 Jose Mariano Alvarez
24/02/2009 - 05:42 | Informe spam
Que tipo de replicacion quieres implementar?

Suponiendo un modelo simple para mantener la copia replicada.
La tabla no tiene una PK?
Si es asi para hacer funcionar la replicacion transaccional no debes agregar
nada.
Si usas snapshot tampoco.

Segun el caso debes considerar algun requerimiento mas.



Saludos


Ing. Jose Mariano Alvarez
Microsoft MVP
SQLTotal Consulting

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

Este mensaje se proporciona tal como es, SIN GARANTIAS de ninguna clase. Por
favor tratar 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.










"Firefox" wrote in message
news:
Hola si tengo una tabla que ya contiene datos y quiero crearle una
columna identity (necesito replicarla). Como hago para generar un
identificador unico para cada linea si estas ya estaban ahi. Muchas
Gracias por anticipado (^_^)
Respuesta Responder a este mensaje
#3 alfonso_c#
24/02/2009 - 21:33 | Informe spam
On 24 feb, 00:42, "Jose Mariano Alvarez"
wrote:
Que tipo de replicacion quieres implementar?

Suponiendo un modelo simple para mantener la copia replicada.
La tabla no tiene una PK?
Si es asi para hacer funcionar la replicacion transaccional no debes agregar
nada.
Si usas snapshot tampoco.

Segun el caso debes considerar algun requerimiento  mas.


Saludos


Ing. Jose Mariano Alvarez
Microsoft MVP
SQLTotal Consulting

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

Este mensaje se proporciona tal como es, SIN GARANTIAS de ninguna clase. Por
favor tratar 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.

"Firefox" wrote in message

news:

> Hola si tengo una tabla que ya contiene datos y quiero crearle una
> columna identity (necesito replicarla). Como hago para generar un
> identificador unico para cada linea si estas ya estaban ahi. Muchas
> Gracias por anticipado (^_^)



gracias (^_^)
Respuesta Responder a este mensaje
#4 Alejandro Mesa
24/02/2009 - 22:00 | Informe spam
Despues de leer el post de Jose Mariano, quiero aclarar que la columna
ROWGUIDCOL se necesita solo para la replicacion tipo mezcla (Merge), pero SQL
Server la adiciona cuando preparas la replicacion, si es que no existe una
columna de este tipo.


AMB

"Alejandro Mesa" wrote:

Cuando dices replicarla, te refieres a usar el mecanismo de replicacion
existente en SQL Server?

De ser asi, entonces necesitas una columna tipo "uniqueidentifier" y que
este marcada como "rowguidcol", ademas de crear una restriccion de valor por
defecto, que este atachada a esa columna.

Si por lo contrario solo quieres una columna nueva con propiedad "identity",
entonces sql server la llenara por ti, despues de haber sido adocionada.

USE tempdb;
GO

CREATE TABLE dbo.t1 (c1 INT NOT NULL UNIQUE);
GO

INSERT INTO dbo.t1 VALUES(4);
INSERT INTO dbo.t1 VALUES(17);

SELECT *
FROM dbo.t1;
GO

ALTER TABLE dbo.t1
ADD c2 UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL CONSTRAINT DF_t1_c2
DEFAULT(NEWID());
GO

SELECT *
FROM dbo.t1;
GO

ALTER TABLE dbo.t1
ADD c3 INT NOT NULL IDENTITY(1, 1);
GO

SELECT *
FROM dbo.t1;
GO

DROP TABLE dbo.t1;
GO


AMB



"Firefox" wrote:

> Hola si tengo una tabla que ya contiene datos y quiero crearle una
> columna identity (necesito replicarla). Como hago para generar un
> identificador unico para cada linea si estas ya estaban ahi. Muchas
> Gracias por anticipado (^_^)
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida