Mysql
 sql >> Base de données >  >> RDS >> Mysql

Utiliser la clé primaire composite comme clé étrangère

La ligne :

FOREIGN KEY (pk_studentID ) REFERENCES student(pk_studentID ),

est faux. Vous ne pouvez pas utiliser pk_studentID comme ça, c'est juste le nom de la contrainte PK dans la table parent. Pour utiliser une clé primaire composée comme clé étrangère, vous devrez ajouter le même nombre de colonnes (qui composent le PK) avec les mêmes types de données à la table enfant, puis utiliser la combinaison de ces colonnes dans le FOREIGN KEY définition :

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 ;