我在使用SQL Server Compact
创建数据库时遇到问题我基本上有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和
来自Groupe的NomGroupe
我就这样做了
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)
)
最后一个create table给出了这个错误
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]
有人可以帮助我吗?
谢谢 Gibit
答案 0 :(得分: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)
);