【问题标题】:Is it possible to create and delete SQL Enum values based on a column name是否可以根据列名创建和删除 SQL 枚举值
【发布时间】:2014-04-30 19:42:25
【问题描述】:

所以基本上如果我有这样的桌子:

ID |电子邮件 |密码 |权限组

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

ID |组名 |权限节点 |继承

【问题讨论】:

  • 显示GroupNamePermissionGroup 列的相关值以进一步了解。

标签: mysql sql enums


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多