Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Borrar de 2 tablas, identidad referencial? (https://www.clubdelphi.com/foros/showthread.php?t=8412)

Dantael 21-03-2004 20:19:48

Borrar de 2 tablas, identidad referencial?
 
Hola! necesito borrar de dos tablas un registro que se encuentra ligado por una matricula, la primera tabla es de alumnos y la segunda de calificaciones hice las tablas en access y tienen identidad referencial, la relación es de uno a muchos, pero al ejecutar el siguiente query en delphi no me borra en ninguna de las tablas aunque las dos condiciones se cumplan y el cursor se pone como sql:

Query1.sql.Clear;
query1.SQL.Add('delete from alumnos where ');
query1.SQL.Add('alumnos.Matricula in (select Matricula from calificacion where calificacion.calificacion=:param1 and calificacion.calificacion<=5)');
query1.ParamByName('param1').AsInteger:=strtoint(edit1.text);
query1.ExecSQL;

La idetidad referencial basta para eliminar los datos de las dos tablas o si alguien me puede decir el query para borrar los registros de las dos tablas se lo agradeceria mucho. :D

marcoszorrilla 21-03-2004 21:06:54

Bueno primero comentar que te has equivocado no es identidad sino integridad, supongo que te has despistado.

Si en Access declaras la integridad referencial entre las dos tablas y además marcas la opción "Eliminación en Cascada", bastará con eliminar un registro de la tabla maestra y quedarán eliminados todos los correspondientes del detalle, pero sino lo has hecho así,primero tendrás que borrar todos los correspondientes del detalle y finalmente el registro maestro.

Un Saludo.

Dantael 21-03-2004 22:08:39

Gracias
 
Muchisimas gracias, sigo probando y en sql 2000 server sabe cómo se haria para decirle que elimine en cascada?


Saludos
Toño

jachguate 22-03-2004 05:51:21

si SQL 2000 Server cumple con el estándar SQL, al crear la relación de integridad basta añadir al final la clausula on delete cascade.

Alter table tabla add
foreign key (campos)
references tabla2 (campos)
on delete cascade.

También hay actualizaciones en cascada, que se definen con on update cascade.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 04:06:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi