【问题标题】:Creating table with a compound key + a foreign key as compound key使用复合键 + 外键作为复合键创建表
【发布时间】:2011-02-23 03:10:22
【问题描述】:

我在 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)
)

最后一个创建表给了我这个错误


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]

谁能帮帮我?

谢谢 千兆

【问题讨论】:

    标签: sql-server database compound-key


    【解决方案1】:

    您必须同时引用复合键的两列。

    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)
    );
    

    【讨论】:

    • 非常感谢!成功了!
    猜你喜欢
    • 2017-07-22
    • 1970-01-01
    • 2011-07-23
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多