Erreur dans la définition de relations dans Enterprise Manager
2 réponses
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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" <hrescourio@s.com> wrote in message
news:OVUpbjpgDHA.3616@TK2MSFTNGP11.phx.gbl...
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.
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.
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 Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************
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
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto:brouardf@club-internet.fr ******************
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 Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com ****************** mailto: ******************