Bonjour à tous,
J'ai un petit soucis de requete.
Voila la conf de ma bdd (c'est ecrit RESTRICT mais c'est bien des on cascade DELETE dans la bdd, c la conf d'avant que je viens juste de changer):
# MySQL Maestro 6.7.0.1
# ----------------------------------------
# Host :
# Database : bibliotheque
SET FOREIGN_KEY_CHECKS=0;
CREATE DATABASE biblio /*!40100 DEFAULT CHARACTER SET latin1 */;
USE biblio;
#
# Structure for table author:
#
CREATE TABLE author (
id int(11) NOT NULL auto_increment,
name varchar(45) default NULL,
firstName varchar(45) default NULL,
PRIMARY KEY (id)
)TYPE=InnoDB;
#
# Structure for table book:
#
CREATE TABLE book (
isbn varchar(45) NOT NULL,
title varchar(45) default NULL,
publication date default NULL,
PRIMARY KEY (isbn)
)TYPE=InnoDB;
#
# Structure for table category:
#
CREATE TABLE category (
id int(11) NOT NULL auto_increment,
name varchar(45) default NULL,
description varchar(45) default NULL,
code varchar(3) default NULL,
PRIMARY KEY (id)
)TYPE=InnoDB;
#
# Structure for table publisher:
#
CREATE TABLE publisher (
id int(11) NOT NULL auto_increment,
name varchar(45) default NULL,
PRIMARY KEY (id)
)TYPE=InnoDB;
#
# Structure for table author-book:
#
CREATE TABLE author_book (
isbn varchar(45) NOT NULL,
idauthor int(11) NOT NULL,
PRIMARY KEY (idauthor,isbn),
FOREIGN KEY (idauthor) REFERENCES author(id) ON DELETE RESTRICT ON UPDATE RESTRICT,
FOREIGN KEY (isbn) REFERENCES book(isbn) ON DELETE RESTRICT ON UPDATE RESTRICT
)TYPE=InnoDB;
#
# Structure for table category-book:
#
CREATE TABLE category_book (
id int(11) NOT NULL,
isbn varchar(45) NOT NULL,
PRIMARY KEY (id,isbn),
FOREIGN KEY (id) REFERENCES category(id) ON DELETE RESTRICT ON UPDATE RESTRICT,
FOREIGN KEY (isbn) REFERENCES book(isbn) ON DELETE RESTRICT ON UPDATE RESTRICT
)TYPE=InnoDB;
#
# Structure for table publisher-book:
#
CREATE TABLE publisher_book (
isbn varchar(45) NOT NULL,
idpublisher int(11) NOT NULL,
PRIMARY KEY (idpublisher,isbn),
FOREIGN KEY (idpublisher) REFERENCES publisher(id) ON DELETE RESTRICT ON UPDATE RESTRICT,
FOREIGN KEY (isbn) REFERENCES book(isbn) ON DELETE RESTRICT ON UPDATE RESTRICT,
INDEX(isbn),
INDEX(idpublisher)
)TYPE=InnoDB;
set foreign_key_checks = 1;
Voila mon problème :
Je veux supprimer un auteur. Mon utilisateur recherche son auteur, et clique sur supprimer dans la liste des résultats que je retourne.
Si je supprime un auteur avec l'identifiant 1 par exemple, il supprime dans author_book toutes les lignes ou idauthor est a 1 : Normal, c le delete on cascade.
Le problème c'est que cela n'a pas de sens de laisser les livres dans la base s'il n'y a plus l'auteur. J'ai donc réaliser qu'il fallait que je fasse une deuxième requete pour supprimer les livres de la table book.
il faut que l'isbn soit egal dans book et author_book et que idauthor = 1 et par la cascade, il va supprimer les référebces dans les tables publisher_book et category_book.
Voila ma requete pour faire ca mais elle ne marche pas :
DELETE FROM book b, author_book ab WHERE ab.idauthor='1' and b.isbn=ab.isbn
2ème requete qui marche...Supprime l'auteur et la réf dans author_book
DELETE FROM author a WHERE a.id='1'
J'ai vu sur le net un paramètre using mais ca n'a pas marcher...Est-ce la solution ? Comment l'utiliser ?
Pouvez-vous m'aider ??
Merci d'avance !
Deb
Partager