0
외래 키를 적용하는 중 "외래 키 제약 조건을 추가 할 수 없습니다."오류가 발생합니다.MySQL에서 외래 키 제약 조건을 추가 할 수 없습니다.
그렇지 않으면 쿼리가 정상적으로 작동합니다. MySQL 쿼리의 구문에서 그다지 문제가없는 것처럼 보입니다.
//Department Table
query = "CREATE TABLE IF NOT EXISTS department "
+ "("
+ "dept_id INT PRIMARY KEY AUTO_INCREMENT,"
+ "dept_name VARCHAR(40) NOT NULL"
+ ")ENGINE=InnoDB";
command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
//Designation Table
query = "CREATE TABLE IF NOT EXISTS designation "
+ "("
+ "desig_id INT PRIMARY KEY AUTO_INCREMENT,"
+ "designation VARCHAR(40) NOT NULL"
+ ")ENGINE=InnoDB";
command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
// PayNature Table
query = "CREATE TABLE IF NOT EXISTS paynature "
+ "("
+ "paynature_id INT PRIMARY KEY AUTO_INCREMENT,"
+ "pay_nature VARCHAR(40) NOT NULL"
+ ")ENGINE=InnoDB";
command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
// Employee Type
query = "CREATE TABLE IF NOT EXISTS employeetype "
+ "("
+ "emptype_id INT PRIMARY KEY AUTO_INCREMENT,"
+ "emp_type VARCHAR(40) NOT NULL"
+ ")ENGINE=InnoDB";
command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
// Pay Scale Table
query = "CREATE TABLE IF NOT EXISTS payscale "
+ "("
+ "payscale_id INT PRIMARY KEY AUTO_INCREMENT,"
+ "payscale VARCHAR(40) NOT NULL, " // Optional
+ "basic_salary DEC(10,3) NOT NULL"
+ ")ENGINE=InnoDB";
command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
// Employee Table
query = "CREATE TABLE IF NOT EXISTS employee "
+ "("
+ "emp_id INT PRIMARY KEY AUTO_INCREMENT,"
+ "emp_name VARCHAR(40) NOT NULL,"
+ "emptype_id_fk VARCHAR(40)," //Optional
+ "dept_id_fk INT," //Optional
+ "desig_id_fk INT," //Optional
+ "payscale_id_fk INT NOT NULL, "
+ "INDEX(emptype_id_fk, dept_id_fk, desig_id_fk, payscale_id_fk),"
//Employee - R - EmployeeType
+ "FOREIGN KEY(emptype_id_fk)"
+ "REFERENCES employeetype(emptype_id)"
+ "ON UPDATE CASCADE,"
// Employee - R - Department
+ "FOREIGN KEY(dept_id_fk)"
+ "REFERENCES department(dept_id)"
+ "ON DELETE SET NULL ON UPDATE CASCADE,"
// Employee - R- Designation
+ "FOREIGN KEY(desig_id_fk)"
+ "REFERENCES designation(desig_id)"
+ "ON DELETE SET NULL ON UPDATE CASCADE ,"
// Employee - R - Payscale
+ "FOREIGN KEY(payscale_id_fk)"
+ "REFERENCES payscale(payscale_id)"
+ "ON DELETE CASCADE ON UPDATE CASCADE"
+ ")ENGINE=InnoDB";
command = new MySqlCommand(query, connection);
command.ExecuteNonQuery();
게시물에 오류를 포함 시켰습니까? 나는 그것을 볼 수 없다. – totalfreakingnoob
안녕하세요, 외래 키를 정의 할 때 테이블 유료화를 만든 다음 payscale 테이블을 참조하는 것 같습니다. 그것들이 같은 테이블이되어야하는지 확신 할 수 없습니까? – Gilles