Power Builder - Identity... Problema con Primary Key

 
Vista:

Identity... Problema con Primary Key

Publicado por alexis roman (7 intervenciones) el 03/05/2005 18:45:37
hola a todos, sinceramente necesito de su ayuda porq es urgente
el problema es que tengo una aplicacion en power 7 con sql 2000 es una aplicacion que esta en red sobre telegestion el caso es q cuando una teleoperadora ingresa una solicitud otra puede estar ingresando al mismo tiempo entonces cuando quieren grabar la solicitud al mismo tiempo ocurre un error una graba y la otra no y es q esta aplicacion trabajan varias operadoras al mismo tiempo gestionando
una forma creo q seria bloqueando la base de datos para q una grabe y la otra despues como para que no ocurra el error
me dijeron q con el IDENTIY es una solucion pero no se usarlo
a ver si me ayudan
de antemano agradezco
gracias
saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Identity... Problema con Primary Key

Publicado por Victor //:-) (116 intervenciones) el 03/05/2005 23:44:33
Tienes 2 soluciones:
A.- IDENTITY:
En tu tabla de movimientos(donde todas las teleoperadoras graba) la creas como
CREATE TABLE dbo.a (nro_unico_proceso decimal(18,0) IDENTITY NOT NULL,
fecha datetime NOT NULL,
operadora varchar(20),
nombre varchar(40) NOT NULL ........etc mas campo. )
y hacer que el nro_unico_proceso sea tu primary key y usalo en todas partes de tu codigo.

B.- Llave compuesta irrepetible:

CREATE TABLE dbo.a (
fecha datetime NOT NULL,
operadora varchar(40),
nombre varchar(40) NOT NULL ........etc mas campo. )

y hacer que el "fecha"(con hora,minutos,segundos y fracciones) mas "operadora" sea tu primary key y usalo en todas partes de tu codigo.

es este caso te sugiero que al entrar las operadoras a tu aplicacion, pongas su clave de acceso en una variable global.
string gs_cve_operadora=''

y lo uses en tu boton de grabar

dw_1.SetItem(ll_row,'operadora',gs_cve_operadora)
dw_1.SetItem(ll_row,'fecha',today())

rtn = dw_1.Update()

IF rtn = 1 AND SQLCA.SQLNRows > 0 THEN

COMMIT USING SQLCA;

ELSE

ROLLBACK USING SQLCA;

END IF

no te va marcar error pues se supone que cada operadora entra solo a una pc y que ademas aunque usara 2 es muy dificil que grabe simultaneamente en el servidor.

espero te sirva.
Victor //:-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar