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

Script para clave foranea

Estas en el tema de Script para clave foranea en el foro de SQL Server en Foros del Web. Estimados, Tengo dos tablas, una llamada producto y otra movimiento, y a traves de un script quiero darle una clave foranea a movimiento, para que ...
  #1 (permalink)  
Antiguo 26/05/2008, 15:55
 
Fecha de Ingreso: octubre-2003
Mensajes: 101
Antigüedad: 20 años, 6 meses
Puntos: 0
Script para clave foranea

Estimados,
Tengo dos tablas, una llamada producto y otra movimiento, y a traves de un script quiero darle una clave foranea a movimiento, para que no se pueda eliminar un producto que esta en la tabla movimientos

Tabla Producto
Id
Descripcion

Tabla Movimiento
Id
producto_id
Descripcion

Manuel
  #2 (permalink)  
Antiguo 26/05/2008, 16:56
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Script para clave foranea

No se entiende lo que necesitas.
¿No sabes como crear un indice?
Código:
Sintaxis
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name 
    ON { table | view } ( column [ ASC | DESC ] [ ,...n ] ) 
[ WITH < index_option > [ ,...n] ] 
[ ON filegroup ]

< index_option > :: = 
    { PAD_INDEX | 
        FILLFACTOR = fillfactor | 
        IGNORE_DUP_KEY | 
        DROP_EXISTING | 
    STATISTICS_NORECOMPUTE | 
    SORT_IN_TEMPDB  
}
¿Quizas necesitas un trigger?
Por favor explica de otra forma.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 26/05/2008, 20:26
 
Fecha de Ingreso: octubre-2003
Mensajes: 101
Antigüedad: 20 años, 6 meses
Puntos: 0
Respuesta: Script para clave foranea

Necesito algo asi
(como dije antes, necesito relacionar dos tablas y para ello quiero crear una clave foranea)

ALTER TABLE [dbo].[tbl_movimiento]
WITH CHECK ADD CONSTRAINT [FK_tbl_movimiento_tbl_producto] FOREIGN KEY([producto_id])
REFERENCES [dbo].[tbl_producto] ([id])



pero me da el siguiente error:

Mens. 547, Nivel 16, Estado 0, Línea 2
Instrucción ALTER TABLE en conflicto con la restricción FOREIGN KEY "FK_tbl_movimiento_tbl_producto". El conflicto ha aparecido en la base de datos "GesCas", tabla "dbo.tbl_producto", column 'id'.
  #4 (permalink)  
Antiguo 27/05/2008, 09:32
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Script para clave foranea

Segun veo, estas añadiendo una relacion que ya existe. Cambiale el nombre y/o verifica la que ya existe.
Cita:
ASI DEBERIAN SER LOS POSTS: Pones tu script y el mensaje de error.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #5 (permalink)  
Antiguo 27/05/2008, 11:20
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Respuesta: Script para clave foranea

Cita:
Iniciado por ManuelV Ver Mensaje

Mens. 547, Nivel 16, Estado 0, Línea 2
Instrucción ALTER TABLE en conflicto con la restricción FOREIGN KEY "FK_tbl_movimiento_tbl_producto". El conflicto ha aparecido en la base de datos "GesCas", tabla "dbo.tbl_producto", column 'id'.
haz una consulta en tu tabla tbl_moviento para obtener todos los producto_id
para verificar que efectivamente todos ellos existan en la tabla tbl_producto en el campo Id.

Si un tbl_movimiento..producto_id no existe en tbl_producto.Id, no podras crear la llave foranea, ya que es precisamente para impedir ese tipo de situaciones.

Quiza este query te pueda ayudar...
Si te regresa algun resultado, esos son los ids que debes incluir en en tbl_producto o ajustar si son invalidos en tbl_movimiento.

Código:
Select producto_id 
from  tbl_movimiento 
Where producto_id not in (Select [id] from tbl_Producto)
group by producto_id
Order by producto_id

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #6 (permalink)  
Antiguo 09/07/2008, 09:56
 
Fecha de Ingreso: julio-2008
Mensajes: 3
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Script para clave foranea

no maches wey lo que pasa que estas declarando con diferentes nombres wey tu llave foranea por por ejemplo si tines idproducto en la tabla producto y en movimientos la llamas con el nombre de id esta no la va a reconocer cambia en references wey aqui escribe segun mi ejemplo: references producto(idproducto) y no nadamas id como lo tienes en el references
  #7 (permalink)  
Antiguo 02/12/2009, 11:50
 
Fecha de Ingreso: diciembre-2009
Mensajes: 1
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Script para clave foranea

Un poco tarde pero ... lo que te dice SQL Server es que intentas introducir valores en una tabla que tiene un FK con otra tabla , pos bien es en la otra tabla donde no existen los valores nuevos y debes poblarla antes que realizar la acción que intentas , ze me entiende ???

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

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 20:56.