Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden Sie den zusammengesetzten Primärschlüssel als Fremdschlüssel

Die Zeile:

FOREIGN KEY (pk_studentID ) REFERENCES student(pk_studentID ),

ist falsch. Sie können pk_studentID nicht verwenden so ist dies nur der Name der PK-Einschränkung in der übergeordneten Tabelle. Um einen zusammengesetzten Primärschlüssel als Fremdschlüssel zu verwenden, müssen Sie die gleiche Anzahl von Spalten (die den PK bilden) mit denselben Datentypen zur untergeordneten Tabelle hinzufügen und dann die Kombination dieser Spalten im 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 ;