Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ORA-00904::Oracle中的两个引用的标识符无效_Sql - Fatal编程技术网

Sql ORA-00904::Oracle中的两个引用的标识符无效

Sql ORA-00904::Oracle中的两个引用的标识符无效,sql,Sql,我也找不到一个好的答案。我的问题是,我想创建一个表,其中引用了太多的表,但我在代码中使用了两次 Vårdnadshavare VARCHAR(11), FOREIGN KEY (Vårdnadshavare) REFERENCES Person(Personnummer), Barn VARCHAR(11), FOREIGN KEY (Barn) REFERENCES Person(Personnummer) 但是我得到了一个错误: ORA-02256:引用列数必须与引用列数匹配

我也找不到一个好的答案。我的问题是,我想创建一个表,其中引用了太多的表,但我在代码中使用了两次

Vårdnadshavare VARCHAR(11), 
  FOREIGN KEY (Vårdnadshavare) REFERENCES Person(Personnummer),
Barn VARCHAR(11), 
  FOREIGN KEY (Barn) REFERENCES Person(Personnummer)
但是我得到了一个错误: ORA-02256:引用列数必须与引用列数匹配

我知道我的参考是错误的,但我无法理解

对不起,我说的是瑞典语

Create table Ärende(
  Ärendenr VARCHAR(50) NOT NULL, 
  Handläggare VARCHAR(50),  
    FOREIGN KEY (Handläggare) REFERENCES Handläggare(Anställningsnr), 
  Vårdnadshavare VARCHAR(11), 
    FOREIGN KEY (Vårdnadshavare) REFERENCES Person(Personnummer),
  Barn VARCHAR(11), 
    FOREIGN KEY (Barn) REFERENCES Person(Personnummer), 
  In Datum VARCHAR(50), 
  Ömmande Skäl VARCHAR(5), 
  Förskola VARCHAR(50), 
    FOREIGN KEY (Förskola) REFERENCES Förskola(IDnr), 
  PRIMARY KEY (Ärendenr)
); 

在创建表的过程中,我使用了
Person(Personnumer)
作为参考。

我创建了这个脚本,它确实可以工作。您的索引可能存在问题:

create table handläggare
( anställningsnr varchar(50) primary key
)

create table person
( personnummer varchar(11) primary key
)
;

create table förskola
( idnr varchar(50) primary key
);

create table ärende
( ärendenr varchar(50) not null
, handläggare varchar(50)
, foreign key (handläggare) references handläggare(anställningsnr)
, vårdnadshavare varchar(11)
, foreign key (vårdnadshavare) references person(personnummer)
, barn varchar(11)
, foreign key (barn) references person(personnummer)
, indatum varchar(50)
, ömmandeskäl varchar(5)
, förskola varchar(50)
, foreign key (förskola) references förskola(idnr)
, primary key (ärendenr)
); 
我在上面编辑的脚本中还有两个问题:

  • 基准中的
    应为一个名称,不得用空格分隔
    
  • Ömmande Skäl
    ,同上

  • 在create语句中,您提供了4个引用:

      Handläggare VARCHAR(50),  
        FOREIGN KEY (Handläggare) REFERENCES Handläggare(Anställningsnr), 
      Vårdnadshavare VARCHAR(11), 
        FOREIGN KEY (Vårdnadshavare) REFERENCES Person(Personnummer),
      Barn VARCHAR(11), 
        FOREIGN KEY (Barn) REFERENCES Person(Personnummer), 
      Förskola VARCHAR(50), 
        FOREIGN KEY (Förskola) REFERENCES Förskola(IDnr), 
    
    请检查所有3个不同的列是否具有相同的数据类型

    这意味着:

    Handläggare(Anställningsnr) should be VARCHAR(50)
    Person(Personnummer) should be VARCHAR(11)
    Förskola(IDnr) should be VARCHAR(50).
    
    据我所知,我认为你在这方面犯了一个错误

    Förskola(IDnr) should be VARCHAR(50)
    

    哪个应该是一个数字

    你能展示你的整个create语句吗?@RaphaëlAlthaus“Vårdnadshavare”可以翻译为父母,“barn”是孩子,“personnummer”是一种社会保险号码。父母和孩子都需要一个有效的。@JoachimIsaksson K.为我的瑞典语(?);道歉。所以问题可能是人的PK。它是复合键吗?@user3356636什么是
    Handläggare
    Person
    Förskola
    的主键?它们都有相同的数据类型,我之前创建了几个表,将它们都用作foregin键,只是不在同一个表中。。。我也提到了PERSON表,因为Oracle指出这可能是错误的。实际上,这不应该是一个问题。尝试删除其中一个引用,以检查问题是否仍然存在。。。如果这样做有效,那么我们将面临一堵钢墙,如果没有,那么我们将在其他地方犯错误…这意味着您的引用是错误的..请检查两列的数据类型。同时,尝试一次删除一个引用,从而挑出哪些引用是错误的……这样您就知道实际问题了……但是在创建表时,如何将主键引用两次?您是否有幸测试过这一点?需要更多的帮助吗?