Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usar chave primária composta como chave estrangeira


A linha:
FOREIGN KEY (pk_studentID ) REFERENCES student(pk_studentID ),

está errado. Você não pode usar pk_studentID assim, este é apenas o nome da restrição PK na tabela pai. Para usar uma Chave Primária composta como Chave Estrangeira, você terá que adicionar o mesmo número de colunas (que compõem o PK) com os mesmos tipos de dados na tabela filha e então usar a combinação dessas colunas no FOREIGN KEY definição:
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 ;