UNIQUE

08/01/2007 - 00:54 por Mickro | Informe spam
Hola a atodos, tengo una duda:

Tengo dos tablas:

tblPagos

[IDPago] (PK)
[Tipo]
[IDOrden]

tblOrdenes

[IDOrden] (PK)
[Numero]


En mi programa, primero guardo los datos de la tabla tblOrdenes para obtener
los datos de la columna IDOrden.
Entonces, una vez que tengo los IDOrden, actualizo mi DataSet tblPagos con
los IDOrden que hasta ahora eran NULL. Se entiende?

Pero, leyendo un libro de SQL Server que compre, veo que puedo hacerlo de
una mejor manera.


Tengo que crear una restriccion UNIQUE en la columna IDOrden de la tabla
tblPagos, entonces creo una relacion con la columna
IDOrden de la tabla tblOrdenes, de manera de que con la verificacion de
integridad referencial se actualizara el valor de la
columna IDOrden de la tabla tblPagos. Pero tengo el problema de que en la
tabla tblPagos alguna veces el valor de IDOrden puede ser NULL. Entonces
no puedo crear una restriccion UNIQUE.

Se ha ocurrido utilizar TRIGGERS.

QUe me recomiendan ustedes??

GRACIAS!

Saludos

Preguntas similare

Leer las respuestas

#1 Jose Mariano Alvarez
08/01/2007 - 01:20 | Informe spam
Debes insertar la orden, Luego insertar el pago, con el IDOrden o con null,
en cuyo caso luego debes hacer un Update en la tabla de pagos para
actualizar este valor.

La actualizacion en cascada no tiene sentido porque no cambias la orden sino
que actualizas el campo de la orden en la tabla de pagos. .

Te conviene crear un FK en pagos en la columna IDOrden que referencie la PK
de la tabla ordenes.

Saludos



Saludos
Ing. Jose Mariano Alvarez


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




"Mickro" wrote in message
news:ucPx$
Hola a atodos, tengo una duda:

Tengo dos tablas:

tblPagos

[IDPago] (PK)
[Tipo]
[IDOrden]

tblOrdenes

[IDOrden] (PK)
[Numero]


En mi programa, primero guardo los datos de la tabla tblOrdenes para
obtener los datos de la columna IDOrden.
Entonces, una vez que tengo los IDOrden, actualizo mi DataSet tblPagos con
los IDOrden que hasta ahora eran NULL. Se entiende?

Pero, leyendo un libro de SQL Server que compre, veo que puedo hacerlo de
una mejor manera.


Tengo que crear una restriccion UNIQUE en la columna IDOrden de la tabla
tblPagos, entonces creo una relacion con la columna
IDOrden de la tabla tblOrdenes, de manera de que con la verificacion de
integridad referencial se actualizara el valor de la
columna IDOrden de la tabla tblPagos. Pero tengo el problema de que en la
tabla tblPagos alguna veces el valor de IDOrden puede ser NULL. Entonces
no puedo crear una restriccion UNIQUE.

Se ha ocurrido utilizar TRIGGERS.

QUe me recomiendan ustedes??

GRACIAS!

Saludos



Respuesta Responder a este mensaje
#2 CCALLOQUISPE PALOMINO
08/01/2007 - 02:19 | Informe spam
hola:

porque los campos que son primary key crealos con el atributo identity y
recuperas el valor del identity con SCOPE_IDENTITY.

CHAU
CCALLOQUISPE


"Mickro" wrote:

Hola a atodos, tengo una duda:

Tengo dos tablas:

tblPagos

[IDPago] (PK)
[Tipo]
[IDOrden]

tblOrdenes

[IDOrden] (PK)
[Numero]


En mi programa, primero guardo los datos de la tabla tblOrdenes para obtener
los datos de la columna IDOrden.
Entonces, una vez que tengo los IDOrden, actualizo mi DataSet tblPagos con
los IDOrden que hasta ahora eran NULL. Se entiende?

Pero, leyendo un libro de SQL Server que compre, veo que puedo hacerlo de
una mejor manera.


Tengo que crear una restriccion UNIQUE en la columna IDOrden de la tabla
tblPagos, entonces creo una relacion con la columna
IDOrden de la tabla tblOrdenes, de manera de que con la verificacion de
integridad referencial se actualizara el valor de la
columna IDOrden de la tabla tblPagos. Pero tengo el problema de que en la
tabla tblPagos alguna veces el valor de IDOrden puede ser NULL. Entonces
no puedo crear una restriccion UNIQUE.

Se ha ocurrido utilizar TRIGGERS.

QUe me recomiendan ustedes??

GRACIAS!

Saludos




Respuesta Responder a este mensaje
#3 Sbennel
08/01/2007 - 10:24 | Informe spam
Estoy deacuerdo con Jose Mariano Alvarez, lo ideal seria hacer una FK
de la pk de la tabla orden al campo orden de la tabla pagos. No
entiendo porque dices que tienes que actualizar el campo idorden de la
tabla pagos supuestamente un pago asociado a una orden estara asociado
siempre a la misma orden no?

Debes insertar la orden, Luego insertar el pago, con el IDOrden o con null,
en cuyo caso luego debes hacer un Update en la tabla de pagos para
actualizar este valor.

La actualizacion en cascada no tiene sentido porque no cambias la orden sino
que actualizas el campo de la orden en la tabla de pagos. .

Te conviene crear un FK en pagos en la columna IDOrden que referencie la PK
de la tabla ordenes.

Saludos



Saludos
Ing. Jose Mariano Alvarez


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




"Mickro" wrote in message
news:ucPx$
> Hola a atodos, tengo una duda:
>
> Tengo dos tablas:
>
> tblPagos
>
> [IDPago] (PK)
> [Tipo]
> [IDOrden]
>
> tblOrdenes
>
> [IDOrden] (PK)
> [Numero]
>
>
> En mi programa, primero guardo los datos de la tabla tblOrdenes para
> obtener los datos de la columna IDOrden.
> Entonces, una vez que tengo los IDOrden, actualizo mi DataSet tblPagos con
> los IDOrden que hasta ahora eran NULL. Se entiende?
>
> Pero, leyendo un libro de SQL Server que compre, veo que puedo hacerlo de
> una mejor manera.
>
>
> Tengo que crear una restriccion UNIQUE en la columna IDOrden de la tabla
> tblPagos, entonces creo una relacion con la columna
> IDOrden de la tabla tblOrdenes, de manera de que con la verificacion de
> integridad referencial se actualizara el valor de la
> columna IDOrden de la tabla tblPagos. Pero tengo el problema de que en la
> tabla tblPagos alguna veces el valor de IDOrden puede ser NULL. Entonces
> no puedo crear una restriccion UNIQUE.
>
> Se ha ocurrido utilizar TRIGGERS.
>
> QUe me recomiendan ustedes??
>
> GRACIAS!
>
> Saludos
>
>
>
Respuesta Responder a este mensaje
#4 Mickro
08/01/2007 - 17:35 | Informe spam
Hola..

"Te conviene crear un FK en pagos en la columna IDOrden que referencie la PK
de la tabla ordenes."

Hice esto, pero el problema que tengo es que en la tabla tblPagos algunas
veces puedo asentar un pago en el que la columna IDOrden quede NULL.
Entonces me tira este error :

CREATE UNIQUE INDEX terminated because a duplicate key was found for object
name 'dbo.tblPagos' and index name 'IX_tblPagos'. The duplicate key value
is (<NULL>).
Could not create constraint. See previous errors.
The statement has been terminated.

Ya tengo pagos asentados en la tabla tblPagos y en muchos la columna IDOrden
esta NULL. Solamente hay un dato cuando el pago es realizado con un
documento que yo llamo "Orden de Compra".

Saludos



"Jose Mariano Alvarez"
escribió en el
mensaje news:
Debes insertar la orden, Luego insertar el pago, con el IDOrden o con
null, en cuyo caso luego debes hacer un Update en la tabla de pagos para
actualizar este valor.

La actualizacion en cascada no tiene sentido porque no cambias la orden
sino que actualizas el campo de la orden en la tabla de pagos. .

Te conviene crear un FK en pagos en la columna IDOrden que referencie la
PK de la tabla ordenes.

Saludos



Saludos
Ing. Jose Mariano Alvarez


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




"Mickro" wrote in message
news:ucPx$
Hola a atodos, tengo una duda:

Tengo dos tablas:

tblPagos

[IDPago] (PK)
[Tipo]
[IDOrden]

tblOrdenes

[IDOrden] (PK)
[Numero]


En mi programa, primero guardo los datos de la tabla tblOrdenes para
obtener los datos de la columna IDOrden.
Entonces, una vez que tengo los IDOrden, actualizo mi DataSet tblPagos
con los IDOrden que hasta ahora eran NULL. Se entiende?

Pero, leyendo un libro de SQL Server que compre, veo que puedo hacerlo de
una mejor manera.


Tengo que crear una restriccion UNIQUE en la columna IDOrden de la tabla
tblPagos, entonces creo una relacion con la columna
IDOrden de la tabla tblOrdenes, de manera de que con la verificacion de
integridad referencial se actualizara el valor de la
columna IDOrden de la tabla tblPagos. Pero tengo el problema de que en la
tabla tblPagos alguna veces el valor de IDOrden puede ser NULL. Entonces
no puedo crear una restriccion UNIQUE.

Se ha ocurrido utilizar TRIGGERS.

QUe me recomiendan ustedes??

GRACIAS!

Saludos







Respuesta Responder a este mensaje
#5 Jose Mariano Alvarez
08/01/2007 - 17:48 | Informe spam
Podrias explicarnos por que precisas que el pago tenga un indice unico sobre
la columna IDOrden.





Saludos
Ing. Jose Mariano Alvarez


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




"Mickro" wrote in message
news:
Hola..

"Te conviene crear un FK en pagos en la columna IDOrden que referencie la
PK
de la tabla ordenes."

Hice esto, pero el problema que tengo es que en la tabla tblPagos algunas
veces puedo asentar un pago en el que la columna IDOrden quede NULL.
Entonces me tira este error :

CREATE UNIQUE INDEX terminated because a duplicate key was found for
object name 'dbo.tblPagos' and index name 'IX_tblPagos'. The duplicate
key value is (<NULL>).
Could not create constraint. See previous errors.
The statement has been terminated.

Ya tengo pagos asentados en la tabla tblPagos y en muchos la columna
IDOrden esta NULL. Solamente hay un dato cuando el pago es realizado con
un documento que yo llamo "Orden de Compra".

Saludos



"Jose Mariano Alvarez"
escribió en el
mensaje news:
Debes insertar la orden, Luego insertar el pago, con el IDOrden o con
null, en cuyo caso luego debes hacer un Update en la tabla de pagos para
actualizar este valor.

La actualizacion en cascada no tiene sentido porque no cambias la orden
sino que actualizas el campo de la orden en la tabla de pagos. .

Te conviene crear un FK en pagos en la columna IDOrden que referencie la
PK de la tabla ordenes.

Saludos



Saludos
Ing. Jose Mariano Alvarez


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




"Mickro" wrote in message
news:ucPx$
Hola a atodos, tengo una duda:

Tengo dos tablas:

tblPagos

[IDPago] (PK)
[Tipo]
[IDOrden]

tblOrdenes

[IDOrden] (PK)
[Numero]


En mi programa, primero guardo los datos de la tabla tblOrdenes para
obtener los datos de la columna IDOrden.
Entonces, una vez que tengo los IDOrden, actualizo mi DataSet tblPagos
con los IDOrden que hasta ahora eran NULL. Se entiende?

Pero, leyendo un libro de SQL Server que compre, veo que puedo hacerlo
de una mejor manera.


Tengo que crear una restriccion UNIQUE en la columna IDOrden de la tabla
tblPagos, entonces creo una relacion con la columna
IDOrden de la tabla tblOrdenes, de manera de que con la verificacion de
integridad referencial se actualizara el valor de la
columna IDOrden de la tabla tblPagos. Pero tengo el problema de que en
la tabla tblPagos alguna veces el valor de IDOrden puede ser NULL.
Entonces
no puedo crear una restriccion UNIQUE.

Se ha ocurrido utilizar TRIGGERS.

QUe me recomiendan ustedes??

GRACIAS!

Saludos











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