【问题标题】:MYSQL - Advice on populating FIELD options from another TABLE COLUMN using ENUMMYSQL - 关于使用 ENUM 从另一个表列填充字段选项的建议
【发布时间】:2020-08-04 11:14:30
【问题描述】:

我是 MySql 新手,如果之前有人问过这个问题,我很抱歉。

我正在兜圈子试图找到这个问题的解决方案。

我有一个带有两个表的 MySql 数据库。

领土

此表列出了世界上所有国家,并有一列列出了每个国家的货币。

货币

这本质上是一个“查找”表,包括国家 ID 和世界货币列表。

在向 TERRITORIES.currency 单元格输入数据时,我希望 CURRENCIES.country 列中出现一个下拉列表。

我花了几个小时在谷歌上搜索 ENUM 字段是否可以从另一个表中调用该数据,或者是否应该使用 SET 等。

如果有人可以帮助我参考关于此问题的优秀 CLEAR 教程,我将不胜感激。

【问题讨论】:

  • 我没有看到地区和货币之间的区别,但如果有一个并且您希望从货币中填充货币,那么您需要从货币中进行选择 - enum 不会这样做。如果您需要验证输入到地区的货币(这是枚举的用途),那么您应该在前端再次从货币中进行验证。
  • 谢谢。不过,我并不清楚。我不是在构建前端。我想知道如何在数据库本身中实现这一点。

标签: mysql enums


【解决方案1】:

您似乎希望发生 2 件事 1) 填充 2) 验证 因为这两个触发器可能对你都有好处。

delimiter $$
Create trigger t before insert on territories
for each row 
begin
 set new.currency = (Select currency from currencies where country = new.country);
end $$
delimiter ;

插入是否尝试插入货币和国家都没有关系。

你还需要一个更新触发器

delimiter $$
Create trigger t before update on territories
for each row 
begin
  set new.currency = (Select currency from currencies where country = new.country);
end $$
delimiter ;

停止更新,将货币更改为无效货币。

【讨论】:

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