Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   SQL Server (http://www.forosdelweb.com/f87/)
-   -   Script para clave foranea (http://www.forosdelweb.com/f87/script-para-clave-foranea-590273/)

ManuelV 26/05/2008 15:55

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

flaviovich 26/05/2008 16:56

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.

ManuelV 26/05/2008 20:26

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'.

flaviovich 27/05/2008 09:32

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.

Andres95 27/05/2008 11:20

Respuesta: Script para clave foranea
 
Cita:

Iniciado por ManuelV (Mensaje 2420956)

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


:arriba: Saludos!

iorisuperloco 09/07/2008 09:56

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

Lavapies_libre 02/12/2009 11:50

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 ???

:-)


La zona horaria es GMT -6. Ahora son las 22:11.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.