MySQL CONCAT_WS不使用外键

6vl6ewon  于 2023-11-16  发布在  Mysql
关注(0)|答案(1)|浏览(85)

我正在生成一个标识符列,以便对订阅进行分组。该列的值使用CONCAT_WS来连接表中的不同列值。但是,我在尝试更改表时得到一个错误:
Database error code: 1215
Database error: Cannot add foreign key constraint
下面是我们要讨论的查询。请注意,organisation_idorder_id是外键:

ALTER TABLE `subscriptions`
ADD COLUMN `identifier` VARCHAR(191) GENERATED ALWAYS AS (
    CONCAT_WS('-', `organisation_id`, `is_trial`, `start_date`, `end_date`, `order_id`, `superseded_date`)
) STORED;

字符串
我尝试了CONCATCONCAT_WS,并从查询中删除了外键。当我没有在串联中包含外键时,没有错误。

xtfmy6hx

xtfmy6hx1#

这是一个已知的限制。documentation说:
存储的生成列的基列上的外键约束不能将CASCADE、SET NULL或SET DEFAULT用作ON UPDATE或ON UPDATE引用操作。
您的解决方案似乎是:

  • 删除外键约束。
  • 删除外键的ON UPDATEON DELETE选项。
  • 删除生成列的STORED选项。

相关问题