Question

si j'ai déposé:

  • Ressource (id (PK), nom)
  • Gestionnaire (id (PK), resource_id (FK), manager_resource_ID (FK))

et devrait resource_id manager_id être tous deux clés étrangères dans la table Ressources .

évidemment je ne veux entrer des valeurs dans chacune de ces colonnes qui ne sont pas des ressources appropriées

quand j'ajouter la première relation (resource_id <-> id), il fonctionne très bien, mais

quand j'ajouter le second (manager_resource_id <-> id), il échoue avec l'erreur:

Impossible de créer la relation [. . .] L'instruction ALTER TABLE en conflit avec la contrainte FOREIGN KEY [...]. Le conflit survenu dans des ressources de table, colonne id

ou dois-je briser ceci en 3 tables?

Ressource (id, first, last)
RESOURCE_MANAGER (id, resource_id, manager_id)
Manager (id)

Était-ce utile?

La solution

Juste un indice:

UPDATE :

Si votre modèle a-gestionnaire de l'employé le plus grand nombre à plusieurs (peu inhabituel), vous pouvez alors faire:

CREATE TABLE Employee
  ( 
   EmployeeID int NOT NULL
  ,[Name] varchar(50)
  )
go  
ALTER TABLE Employee ADD
CONSTRAINT PK_Employee PRIMARY KEY CLUSTERED (EmployeeID ASC)
go   

CREATE TABLE Manager
  ( 
   EmployeeID int NOT NULL
  ,ManagerID int NOT NULL
  )
go  
ALTER TABLE Manager ADD
 CONSTRAINT PK_Manager PRIMARY KEY CLUSTERED (EmployeeID ASC, ManagerID ASC)
,CONSTRAINT FK1_Manager FOREIGN KEY (EmployeeID) REFERENCES Employee(EmployeeID)
,CONSTRAINT FK2_Manager FOREIGN KEY (ManagerID) REFERENCES Employee(EmployeeID)
,CONSTRAINT chk_Manager CHECK (EmployeeID <> ManagerID) 
go  

Autres conseils

Vous devez créer les clés étrangères dans le tableau Manager.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top