sql >> Base de Datos >  >> RDS >> Mysql

Usar clave principal compuesta como clave externa

La línea:

FOREIGN KEY (pk_studentID ) REFERENCES student(pk_studentID ),

Está Mal. No puedes usar pk_studentID así, este es solo el nombre de la restricción PK en la tabla principal. Para usar una clave principal compuesta como clave externa, deberá agregar la misma cantidad de columnas (que componen el PK) con los mismos tipos de datos a la tabla secundaria y luego usar la combinación de estas columnas en FOREIGN KEY definición:

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 ;