Question:
Date: 15-08-2017 22:34:26
(In Spanish)
desde hace mucho me ronda una pregunta con las claves foráneas, y es en qué sentido va la restricción, me explico...
Yo tengo 2 tablas, la principal y la tabla secundaria, lo que quiero es que cuando se borre algo de la tabla principal, se borre todo lo que esté asociado en la secundaria, y al reves no, o sea que si se borra algo en la secundaria no haga nada, y la clave foránea la creo en la vista de la secundaria, no se si está bien, dejo un ejemplo en foto....
Al crear la foreing key como está en la imagen que adjunto, ¿cómo funcionará, lo estoy haciendo bien?
Muchas gracias Votes: 0 - Answers: 6 - Views: 14 Share on: Google Facebook Twitter LinkedIn Link
Clave foránea (foreing key), ¿en que dirección va la restricción?[Resolved]
Hola compañer@s,desde hace mucho me ronda una pregunta con las claves foráneas, y es en qué sentido va la restricción, me explico...
Yo tengo 2 tablas, la principal y la tabla secundaria, lo que quiero es que cuando se borre algo de la tabla principal, se borre todo lo que esté asociado en la secundaria, y al reves no, o sea que si se borra algo en la secundaria no haga nada, y la clave foránea la creo en la vista de la secundaria, no se si está bien, dejo un ejemplo en foto....
Al crear la foreing key como está en la imagen que adjunto, ¿cómo funcionará, lo estoy haciendo bien?
Muchas gracias Votes: 0 - Answers: 6 - Views: 14 Share on: Google Facebook Twitter LinkedIn Link
Answers:
-
Date: 21-08-2017 11:02:56 Sí, es correcto.
Al poner la cláusula ON DELETE UPDATE si borras datos de la tabla independiente todos los datos de la tabla dependiente se borran para mantener la integridad referencial Votes: 1 - Link answer -
Date: 21-08-2017 21:24:42 Muchas graciaspor tu respuesta Ernesto.
Entiendo entonces que la haga donde la haga, el sistema ya identifica que tabla es la principal y cual es la dependiente no? Votes: 0 - Link answer -
Date: 23-08-2017 20:58:25 Buenas
1: Lo que desea es borrar de la tabla 1 = prufe;
pero en la tabla 2 = prufe_control, se mantengan los datos.
2: De la tabla dos puede borrar lo que desee pero no se refleja en la tabla 1.
La forma que lo puedes lograr es con un disparador denominado trigger.
el cual es un control de auditoria, que controla quien hace cambios, borra o
incluye datos en una tabla,
A continuación de adjunto un ejemplo fucional, en caso de que borren algún
dato de la primera tabla= prufe.
Atte.
---------------------------------------tablas
prufe
id int(11)
fecha date
monto varchar(45)
-----------------------------------
prufe_control
id INT(11)
fecha DATE
monto VARCHAR(45)
fechacambio DATE
accion VARCHAR(45)
-------------------------------------------
----crear el trigger----------------------
DROP TRIGGER IF EXISTS `salidas`.`prufe_BEFORE_UPDATE`;
DELIMITER $$
USE `salidas`$$
CREATE DEFINER=`root`@`localhost` TRIGGER `salidas`.`prufe_BEFORE_UPDATE`
BEFORE UPDATE ON `prufe`
FOR EACH ROW
BEGIN
INSERT into prufedos_control
SET
id= old.id,
fecha=old.fecha,
monto= old.monto,
fechacambio = now(),
accion = 'update';
END$$
DELIMITER ; Votes: 1 - Link answer -
Date: 23-08-2017 21:17:54 Muchas gracias Bonilla,
esto sería algo muy similar a la Foreing Key no? Votes: 0 - Link answer -
Date: 24-08-2017 13:07:05 --Lo que deseaba aconsejar es el peligro de que terceras personas alteren o borren datos sensibles.
--La opinión del Sr. Ernesto Peimbert es la correcta.
atte. Votes: 0 - Link answer -
To actively participate in the community first must authenticate, enter the system.Sign In