0

SQLServerCompactでデータベースを作成する際に問題が発生しました

基本的に5つのテーブルがあります(CentreDeCout、Profil、Groupe、CCProfilPivot、CCProfilGroupePivot)

CentreDeCoutの主キーとしてNomCCがあります
Profilの主キーとしてNomProfilがあります

CCProfilPivotには、主キーとしてNomCCとNomProfilがあります(CentreDeCoutとProfilの主キーを参照)

Groupeの主キーはNomGroupeです

CCProfilGroupePivotには、CCprofilPivotの主キーとNomGroupeの主キーが必要です。

したがって、主キーはNomCC、NomProfil、およびNomGroupeになります。
NomCCとNomProfilはCCProfilPivotから取得され、NomGroupeはGroupeから取得されます。

これが私がやった方法です

  
CREATE TABLE CentreDeCout(
NomCC nvarchar(100) primary key
)

CREATE TABLE Profil(
NomProfil nvarchar(100) primary key
)

CREATE TABLE Groupe(
NomGroupe nvarchar(100) primary key
)

CREATE TABLE CCProfilPivot(
NomCC nvarchar(100) references CentreDeCout(NomCC),
NomProfil nvarchar(100) references Profil(NomProfil),
PRIMARY KEY(NomCC,NomProfil)
)


CREATE TABLE CCProfilGroupePivot(
NomCC nvarchar(100) references CCProfilPivot(NomCC),
NomProfil nvarchar(100) references CCProfilPivot(NomProfil),
NomGroupe nvarchar(100) references Groupe(NomGroupe),
PRIMARY KEY (NomCC,NomProfil,NomGroupe)
)

最後の作成テーブルでこのエラーが発生します


SQL Exercution Error.

Exercuted SQL statement: CREATE TABLE CCProfilGroupePivot( NomCC nvarchar(100) references CCProfilPivot(NomCC), NomProfil nvarchar(100) references CCProfilPivot(NomProfil), NomGroupe nvarchar(100) references Groupe(NomGroupe), PRIMARY KEY (NomCC,NomProfil,NomGroupe) )

error Source: SQL Server Compact ADO.Net Data Provider Error Message: The referenced table must have a primary or candidate key.[FK Name = FK_CCProfilGroupePivot__00000000000000D7]

誰か助けてくれませんか?

ありがとうギビビット

4

1 に答える 1

2

複合キーの両方の列を同時に参照する必要があります。

CREATE TABLE CCProfilGroupePivot(
  NomCC nvarchar(100) not null,
  NomProfil nvarchar(100) not null,
  NomGroupe nvarchar(100) references Groupe(NomGroupe),
  PRIMARY KEY (NomCC,NomProfil,NomGroupe),
  foreign key (NomCC, NomProfil) 
    references CCProfilPivot (NomCC, NomProfil)
);
于 2011-02-22T19:10:22.923 に答える