是否可以根据列名创建和删除SQL Enum值

时间:2014-04-30 19:42:25

标签: mysql sql enums

所以基本上如果我有一个这样的表:

ID |电子邮件|密码| PermissionGroup

我可以根据不同表格中GroupName列值的所有名称来定义权限组的枚举值

ID | GroupName | PermissionNodes |继承

1 个答案:

答案 0 :(得分:0)

ENUM不适合执行此任务。

您正在描述foreign key constraint

CREATE TABLE groups (
  ID              SERIAL,
  GroupName       VARCHAR(255),
  PermissionNodes VARCHAR(255),  -- not sure what datatype this should be
  Inheritance     VARCHAR(255)   -- nor this
) ENGINE = InnoDB;

CREATE TABLE users  (
  ID              SERIAL,
  Email           VARCHAR(255),
  Password        CHAR(60) BINARY,
  PermissionGroup BIGINT UNSIGNED,
  FOREIGN KEY (PermissionGroup) REFERENCES groups (ID)
) ENGINE = InnoDB;

请注意,外键通常引用父表的主键。如果想要获得用户组的GroupName,则只需加入表:

SELECT users.*, groups.GroupName
FROM   users JOIN groups ON groups.ID = users.PermissionGroup