Mysql
 sql >> Database >  >> RDS >> Mysql

Usa la chiave primaria composita come chiave esterna

La linea:

FOREIGN KEY (pk_studentID ) REFERENCES student(pk_studentID ),

è sbagliato. Non puoi usare pk_studentID in questo modo, questo è solo il nome del vincolo PK nella tabella padre. Per utilizzare una chiave primaria composta come chiave esterna, dovrai aggiungere lo stesso numero di colonne (che compongono la PK) con gli stessi tipi di dati alla tabella figlio e quindi utilizzare la combinazione di queste colonne nella FOREIGN KEY definizione:

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 ;