Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql:多个表的一个枚举_Php_Mysql - Fatal编程技术网

Php Mysql:多个表的一个枚举

Php Mysql:多个表的一个枚举,php,mysql,Php,Mysql,假设我有两张桌子: mice id (int) petname (varchar) gender (enum (male, female)) 1 spot male 2 rice female men id (int) name (varchar) gender (enum (male, female)) 1 bob male 2 jane female

假设我有两张桌子:

mice
id (int) petname (varchar) gender (enum (male, female))
1        spot            male
2        rice           female

men
id (int) name (varchar) gender (enum (male, female))
1        bob            male
2        jane           female
3        steve          male
性别枚举存在两次。每张桌子一次。因此,如果我想用新值扩展性别枚举,这意味着我必须手动编辑几个表中的枚举。这是次优的

有没有办法定义一次枚举值并在多个表中使用它们

或者创建一个名为genders的新表并将genders放在那里,然后在插入和更新到mice和men中时,只允许gender列包含gender表中的值。但是,这种检查需要自动进行(与enum列类型类似),因此在我要运行的每个更新或插入查询之前,我不必首先执行额外的查询来检查性别表中是否存在使用过的性别,这会在鼠标或男人中的性别列中插入值


mysql可以做到这一点吗?

您可以忘记SQL的
enum
。相反,只需在PHP代码中使用
VARCHAR(50)
等,并使用
const
来定义
enum

我很少使用SQL的
enum
,在大多数情况下,它的好处小于它的复杂性。

外键?