简体   繁体   English

MySql-使用表而不是Enum ...如何对必须手动插入的值做外键?

[英]MySql - Using Tables instead of Enum…how do I make a foreign key on a value I have to insert manually?

If the employee is in department "red", I want to make a sub category. 如果员工在部门“红色”中,我想创建一个子类别。 Since I am using tables instead of enum for this, I have to insert the static department field values manually. 由于我为此使用表而不是枚举,因此必须手动插入静态部门字段值。 How would I make department red a foreign key to reference table red_object? 如何使部门红色成为引用表red_object的外键? Or is there better design to have this sub-category? 还是有更好的设计来包含此子类别?

http://sqlfiddle.com/#!2/83a2a http://sqlfiddle.com/#!2/83a2a

create table department(
  deptID int auto_increment primary key,
  deptName varchar(30)
  ) ENGINE = INNODB;

create table red_object(
  objectID int auto_increment primary key,
  objectName varchar(30)
  ) ENGINE = INNODB;

create table employees(
  userId int auto_increment not null primary key,
  firstName varchar(20) not null,
  lastName varchar(20) not null,
  phone tinyint unsigned,
  fax tinyint unsigned,
  position varchar(30),
  jpeg char(50),
  deptID int,
  unique(firstName, LastName, jpeg),
  foreign key (deptID) references department(deptID)
  ) ENGINE = INNODB;

insert into department (deptName) 
  values ('red'), ('white'), ('blue'), ('black');

insert into red_object (objectName) 
  values ('red_square'), ('red_circle'), ('red_octagon');

insert into employees (firstName, lastName) values ('jane' , 'doe');

insert into employees (firstName, lastname, deptID) values ('john', 'Doe', '3');

发现我无法将外键添加到我试图执行的“值”中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM