sql >> Databasteknik >  >> RDS >> Mysql

Använd sammansatt primärnyckel som främmande nyckel

Raden:

FOREIGN KEY (pk_studentID ) REFERENCES student(pk_studentID ),

är fel. Du kan inte använda pk_studentID sådär, detta är bara namnet på PK-begränsningen i den överordnade tabellen. För att använda en sammansatt primärnyckel som främmande nyckel måste du lägga till samma antal kolumner (som utgör PK) med samma datatyper till den underordnade tabellen och sedan använda kombinationen av dessa kolumner i FOREIGN KEY definition:

CREATE TABLE files
(
  files_name varchar(50) NOT NULL, 

  batch_id varchar(4) NOT NULL,         --- added, these 3 should not
  dept_id varchar(6) NOT NULL,          --- necessarily be NOT NULL
  student_id varchar (25) NOT NULL,     --- 

  files_path varchar(50),
  files_data varchar(max),              --- varchar(max) ??   
  files_bookmarks xml,                  --- xml ??
                                        --- your question is tagged MySQL, 
                                        --- and not SQL-Server

  CONSTRAINT pk_filesName 
    PRIMARY KEY (files_name),

  CONSTRAINT fk_student_files                     --- constraint name (optional)
    FOREIGN KEY (batch_id, dept_id, student_id)  
      REFERENCES student (batch_id, dept_id, student_id)
) ENGINE = InnoDB ;



  1. Hur man uppdaterar från SELECT i SQL Server

  2. Hur kan jag hitta vilka tabeller som refererar till en given tabell i Oracle SQL Developer?

  3. Få den vänstra delen av en sträng i SQL Server (T-SQL)

  4. De bästa varnings- och meddelandeverktygen för PostgreSQL