Delete from multiple tables in sql -
hello can me here.
i delete multiple tables.
i want delete id_grupo = 6 grupos. when delete delete gerir_posts id_grupo = 6. posts, id_post = 4, that's same id gerir_posts id_post; want delete too.
so realy want when remove grup , posts in grup deleted too.

this example of db.
create table utilizadores ( id_utilizador int auto_increment not null primary key, nome varchar(50) ); insert utilizadores values (1,'admin'); create table grupos ( id_grupo int auto_increment not null primary key, nome_grupo varchar(50) ); insert grupos values (1,'grupo'); create table gerir_grupos ( id_gerir_grupo int auto_increment not null primary key, id_grupo int, id_utilizador int, foreign key (id_utilizador) references utilizadores(id_utilizador), foreign key (id_grupo) references grupos(id_grupo) on delete cascade ); insert gerir_grupos values (1,1,1); create table posts ( id_post int auto_increment not null primary key, id_utilizador int, titulo_do_post varchar(50), corpo_do_post varchar(500), foreign key (id_utilizador) references utilizadores (id_utilizador) ); insert posts values (1,1,"teste","grupo teste"); create table gerir_posts ( id_gerir_post int auto_increment not null primary key, id_post int, id_grupo int, foreign key (id_post) references posts (id_post) on delete cascade, foreign key (id_grupo) references grupos (id_grupo)on delete cascade ); insert gerir_posts values (1,1,1); if can help

you cannot specify many tables in single delete statement.
use transaction
begin; delete posts post_id in (select post_id gerir_posts ...); delete gerir_posts ... ; delete grupos ... ; commit; this way, either deleted together, or stays intact.
use on delete cascade in constraints
create table posts ( post_id integer primary key, ... ); create table gerir_posts ( ... post_id integer; constraint gerir_posts_fk foreign key(post_id) references(posts.post_id) on delete cascade, ); now if delete record posts, records in gerir_posts refer same post_id deleted.
you can use alter table add / modify constraints of existing tables.
Comments
Post a Comment