簡體   English   中英

創建具有多個值的主鍵(包括外鍵)

[英]Creating a Primary Key with multiple value (including Foreign Keys)

我正在嘗試使用PostgreSQL創建那些表:

create table OrgaoSuperior(
cod_superior int unique,
primary key(cod_superior),
nome_superior varchar(2000)
);

create table OrgaoSubordinado(
cod_superior int,
cod_subordinado int unique,
primary key(cod_superior,cod_subordinado),
foreign key(cod_superior) references OrgaoSuperior(cod_superior),
nome_subordinado varchar(2000)
);

create table Subfuncao(
cod_subfuncao int not null unique,
primary key(cod_subfuncao),
nome_subfuncao varchar(2000)
);

create table Acao(
cod_subordinado int not null,
cod_subfuncao int not null,
cod_acao int not null,
primary key(cod_subordinado,cod_subfuncao,cod_acao),
foreign key(cod_subordinado) references OrgaoSubordinado(cod_subordinado),
foreign key(cod_subfuncao) references Subfuncao(cod_subfuncao),
nome_acao varchar(2000)
);

但是我正在獲取SQL狀態42830。我已經嘗試過對cod_acao使用UNIQUE約束,但是我不希望僅cod_acao是唯一的(它可以重復其值),我希望cod_subordinado,cod_subfuncao和cod_acao的組合是唯一的唯一(並成為此表的PRIMARY KEY)。 有沒有解決此問題的方法?

您只能在表的一列上使用主鍵,並且主鍵也不為null和唯一。

SQL狀態 42830具有別名invalid_foreign_key

外鍵必須引用作為主鍵或形成唯一約束的列。

但這似乎在您的表中。

您的代碼工作甚至PostgreSQL的8.3.20 - 9.3.1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM