Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Rstringir que un registro sea usado en varias ubicaciones

Estas en el tema de Rstringir que un registro sea usado en varias ubicaciones en el foro de SQL Server en Foros del Web. Hola amigos del foro: Hoy vengo con una duda, haber si logro explicarme bien. Tengo una base de datos con unas 30 tablas entre las ...
  #1 (permalink)  
Antiguo 07/12/2012, 00:17
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 1
Pregunta Rstringir que un registro sea usado en varias ubicaciones

Hola amigos del foro:

Hoy vengo con una duda, haber si logro explicarme bien.

Tengo una base de datos con unas 30 tablas entre las cuales destacan las tablas:

Llantas, que contiene información de las llantas(Neumáticos) de vehículos(buses, camiones, carros tipo sedan etc.) y un campo que es el que me atañe llamado UbicacionFisica este campo debería cambiar al momento de realizar un cambio.

Inspecciones. Esta tabla servirá para almacenar las inspecciones que se realicen a las llantas, es decir que vehículo tiene n1, n2, n3, n4 llantas en una fecha determinada. En base a esta tabla de inspecciones llenamos la tabla Movimientos

Movimientos, que contendrá información acerca de los movimientos que ha tenido una llanta es decir si estuvo en una unidad en una fecha determinada o si estuvo en una bodega física, o en algún proveedor para una reparación externa o para ser reencauchada por el proveedor.

Ahora lo que tengo de duda es ¿cómo hacer que mi base de datos cambie Llantas.UbicacionFisca, cuando yo realice un movimiento físico o mejor dicho cuando ingrese una inspección.

Se que es con un trigger pero de momento no tengo una luz para guiarme

El otro problema que tengo es como tener una restricción en BD para que el código de una llanta (INT) no se repita en dos vehículos al mismo tiempo.


de momento esto es lo que tengo pero estoy abierto a opiniones:

Código SQL:
Ver original
  1. --SI LA LLANTA ESTA EN UNA BODEGA
  2. --SOLO PODRÍA SER MOVIDA HACIA UNA UNIDAD O UN PROVEEDOR
  3.  
  4. --SI LA LLANTA ESTA EN UN PROVEEDOR
  5. --SOLO PODRÍA SER MOVIDA HACIA UNA BODEGA
  6.  
  7. --SI LA LLANTA ESTA EN UNA BODEGA
  8. --PODRÍA SER MOVIDA HACIA UNA UNIDAD O PROVEEDOR
  9.  
  10. DECLARE @CUI VARCHAR(MAX)
  11. DECLARE @UI VARCHAR(MAX)
  12.  
  13. -- AQUÍ DEBERÍA IR OTRA SENTENCIA COMO UNA BUSQUEDA QUE ME RESTRINGA A LA UBICACIÓN FÍSICA DE LA LLANTA
  14. SET @CUI = 1
  15. SET @UI = (SELECT Descripcion FROM Bodega WHERE @CUI = IdBodega)
  16.  
  17. SELECT @CUI AS Código_Ubicación_Inicial
  18. SELECT @UI AS Descripción_Ubicación
  19.  
  20. --LO MISMO HARÍA PARA SELECCIONAR LA UBICACIÓN FINAL
  21.  
  22. DECLARE @CUF VARCHAR(MAX)
  23. DECLARE @UF VARCHAR(MAX)
  24.  
  25. -- AQUÍ DEBERÍA IR OTRA SENTENCIA COMO UNA BÚSQUEDA QUE ME RESTRINGA A LA UBICACIÓN FÍSICA DE LA LLANTA
  26. SET @CUF = 1
  27. SET @UF = (SELECT Descripcion FROM Bodega WHERE @CUF = IdBodega)
  28.  
  29. SELECT @CUF AS Código_Ubicación_Final
  30. SELECT @UF AS Descripción_Ubicación
  31.  
  32. --CON LA SALVEDAD DE QUE LA TABLA BODEGA PODRÍA SER CUALQUIER
  33. --OTRA TABLA QUE PUEDA SER UNA UBICACION FISICA
  34. --EN ESTE CASO BODEGA, PERO TAMBIÉN UNA UNIDAD O UN PROVEEDOR
  #2 (permalink)  
Antiguo 07/12/2012, 02:11
Avatar de Heimish2000  
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 844
Antigüedad: 13 años, 3 meses
Puntos: 89
Respuesta: Rstringir que un registro sea usado en varias ubicaciones

No entiendo exactamente lo que quieres hacer con las llantas, dónde y, sobre todo, cuándo las quieres mover.

Con respecto a que no se repita el ID de la llanta, deberías usar el ID como PK de la tabla, así no se repetirá
  #3 (permalink)  
Antiguo 07/12/2012, 09:41
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 9 meses
Puntos: 40
Respuesta: Rstringir que un registro sea usado en varias ubicaciones

Lo mismo como Heimish- yo tampoco estoy seguro de haberte entendido..

El Trigger que buscas es probablemente más o menos así:
Código SQL:
Ver original
  1. CREATE TRIGGER TR_Inspecciones
  2. ON Inspecciones
  3. FOR INSERT AS
  4. UPDATE Llantas
  5. SET UbicacionFisica=I.UbicacionFisica
  6. FROM Llantas L
  7. INNER JOIN Inserted I
  8.     ON L.ID=I.ID
  9. GO

Heimish te sugerió que la columna ID sea la clave primaria.
Si la tabla ya tiene una clave primaria, tu puedes crear un Unique Index que garantice que no hayan duplicaciones en esta columna.
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #4 (permalink)  
Antiguo 07/12/2012, 10:31
 
Fecha de Ingreso: octubre-2011
Mensajes: 13
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Rstringir que un registro sea usado en varias ubicaciones

Bueno gracias por sus respuestas.

La situación es que si nos metemos en la vida real -por así decirlo- si una llanta esta en vehículo esta misma llanta no podría estar en otro lugar físicamenten hablando, como logro esa restricción es la pregunta.

Se me había ocurrido limitar las ubicaciones pero aún no estoy seguro de como hacerlo.

Por ejemplo si estoy viendo el detalle de las llantas que tiene una unidad si quiero quitar una llanta de ese detalle que me muestre solo las que tiene en ese momento. Y seleccionar otra ubicacion donde estara la llanta que se le va a poner como un cambio de llantas.

No se si ahora mas o menos me doy a entender.
  #5 (permalink)  
Antiguo 07/12/2012, 11:03
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Rstringir que un registro sea usado en varias ubicaciones

aqui el problema es que no te das a enteder, en cuanto a lo que quieres si se entiende quieres hacer una restriccion en cuanto a tus ubicaciones, ahora seria de mucha ayuda si pusieras ejemplos de tus datos y de tu estructura de tablas digo seria algo como

tengo estas tablas A,B y C con estos datos A1,A2,B1,B2,C1 como logro hacer que A2 no aparezca mas de una vez en C1...

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: registro, select, tabla, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:32.