Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Erreur dans la définition de relations dans Enterprise Manager

2 réponses
Avatar
Hervé RESCOURIO
J'ai les trois tables suivantes :
create table "ABONNEMENT" (
"IDABONNEMENT" int not null ,
"IDABONNE" int not null ,
"IDRIB" int not null ,
primary key ("IDABONNEMENT")
);

create table "PERSONNE" (
"IDPERSONNE" int not null ,
primary key ("IDPERSONNE")
);

create table "RIB" (
"IDRIB" int not null ,
"IDPERSONNE" int not null ,
primary key ("IDRIB")
);

Avec les relations suivantes
alter table "RIB"
add constraint "FK_RIB_PERSONNE" foreign key "IDPERSONNE")
references "PERSONNE" ("IDPERSONNE")
on update cascade on delete cascade;

alter table "ABONNEMENT"
add constraint "FK_ABONNEMENT_RIB" foreign key ("IDRIB")
references "RIB" ("IDRIB")
on update cascade on delete no action;

alter table "ABONNEMENT"
add constraint "FK_ABONNEMENT_PERSONNE" foreign key ("IDABONNE")
references "PERSONNE" ("IDPERSONNE")
on update cascade on delete no action;

Lorsque j'enregistre ma dernière relation, j'ai l'erreur suivante (en
testant ce même script avec sybase je n'ai pas le pb).

table 'PERSONNE' enregistrée
table 'ABONNEMENT'
- Impossible de créer la relation 'FK_ABONNEMENT_PERSONNE'.
Erreur ODBC : [Microsoft][ODBC SQL Server Driver][SQL Server]L'introduction
d'une contrainte de clé étrangère 'FK_ABONNEMENT_PERSONNE' dans la table
'ABONNEMENT' peut provoquer des cycles ou des accès en cascade multiples.
Spécifiez ON DELETE NO ACTION ou ON UPDATE NO ACTION ou modifiez les autres
contraintes de clés étrangères
[Microsoft][ODBC SQL Server Driver][SQL Server]Impossible de créer la
contrainte. Voir les erreurs précédentes.

Merci d'avance pour vos réponses.

2 réponses

Avatar
bruno reiter [MVP]
Ton dessin de base (en tout cas son implémentation) est incorrect, tu pourrais
avoir avec tes contraintes:

perso
code
1
2

RIB
code perso
1 1
2 1
3 1

Abonn
Code perso RIB
1 1 1
2 2 2
3 3 2

Or c'est faux, et tes cascades seraient fausses

BR



"Hervé RESCOURIO" wrote in message
news:
J'ai les trois tables suivantes :
create table "ABONNEMENT" (
"IDABONNEMENT" int not null ,
"IDABONNE" int not null ,
"IDRIB" int not null ,
primary key ("IDABONNEMENT")
);

create table "PERSONNE" (
"IDPERSONNE" int not null ,
primary key ("IDPERSONNE")
);

create table "RIB" (
"IDRIB" int not null ,
"IDPERSONNE" int not null ,
primary key ("IDRIB")
);

Avec les relations suivantes
alter table "RIB"
add constraint "FK_RIB_PERSONNE" foreign key "IDPERSONNE")
references "PERSONNE" ("IDPERSONNE")
on update cascade on delete cascade;

alter table "ABONNEMENT"
add constraint "FK_ABONNEMENT_RIB" foreign key ("IDRIB")
references "RIB" ("IDRIB")
on update cascade on delete no action;

alter table "ABONNEMENT"
add constraint "FK_ABONNEMENT_PERSONNE" foreign key ("IDABONNE")
references "PERSONNE" ("IDPERSONNE")
on update cascade on delete no action;

Lorsque j'enregistre ma dernière relation, j'ai l'erreur suivante (en
testant ce même script avec sybase je n'ai pas le pb).

table 'PERSONNE' enregistrée
table 'ABONNEMENT'
- Impossible de créer la relation 'FK_ABONNEMENT_PERSONNE'.
Erreur ODBC : [Microsoft][ODBC SQL Server Driver][SQL Server]L'introduction
d'une contrainte de clé étrangère 'FK_ABONNEMENT_PERSONNE' dans la table
'ABONNEMENT' peut provoquer des cycles ou des accès en cascade multiples.
Spécifiez ON DELETE NO ACTION ou ON UPDATE NO ACTION ou modifiez les autres
contraintes de clés étrangères
[Microsoft][ODBC SQL Server Driver][SQL Server]Impossible de créer la
contrainte. Voir les erreurs précédentes.

Merci d'avance pour vos réponses.





Avatar
Fred BROUARD
entre nous, pour modéliser un base, utilise un outil de modélisation,
cela t'évitera de faire des erreurs monstrueuses comme celle-ci.

Sache que Power Designer (ex AMC Designor de Sybase) est parfait et peut
être utilisé gratuitement à des fins de test quelques 60 jours...

A +

Hervé RESCOURIO a écrit:
J'ai les trois tables suivantes :
create table "ABONNEMENT" (
"IDABONNEMENT" int not null ,
"IDABONNE" int not null ,
"IDRIB" int not null ,
primary key ("IDABONNEMENT")
);

create table "PERSONNE" (
"IDPERSONNE" int not null ,
primary key ("IDPERSONNE")
);

create table "RIB" (
"IDRIB" int not null ,
"IDPERSONNE" int not null ,
primary key ("IDRIB")
);

Avec les relations suivantes
alter table "RIB"
add constraint "FK_RIB_PERSONNE" foreign key "IDPERSONNE")
references "PERSONNE" ("IDPERSONNE")
on update cascade on delete cascade;

alter table "ABONNEMENT"
add constraint "FK_ABONNEMENT_RIB" foreign key ("IDRIB")
references "RIB" ("IDRIB")
on update cascade on delete no action;

alter table "ABONNEMENT"
add constraint "FK_ABONNEMENT_PERSONNE" foreign key ("IDABONNE")
references "PERSONNE" ("IDPERSONNE")
on update cascade on delete no action;

Lorsque j'enregistre ma dernière relation, j'ai l'erreur suivante (en
testant ce même script avec sybase je n'ai pas le pb).

table 'PERSONNE' enregistrée
table 'ABONNEMENT'
- Impossible de créer la relation 'FK_ABONNEMENT_PERSONNE'.
Erreur ODBC : [Microsoft][ODBC SQL Server Driver][SQL Server]L'introduction
d'une contrainte de clé étrangère 'FK_ABONNEMENT_PERSONNE' dans la table
'ABONNEMENT' peut provoquer des cycles ou des accès en cascade multiples.
Spécifiez ON DELETE NO ACTION ou ON UPDATE NO ACTION ou modifiez les autres
contraintes de clés étrangères
[Microsoft][ODBC SQL Server Driver][SQL Server]Impossible de créer la
contrainte. Voir les erreurs précédentes.

Merci d'avance pour vos réponses.






--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************