mysql 有没有一种方法可以让一个列根据另一个列的值成为多个表的外键/引用

4bbkushb  于 2023-05-28  发布在  Mysql
关注(0)|答案(1)|浏览(170)

我试图做一些像有一个表的客户谁可以选择从多种付款方式,每种付款方式可能需要不同的凭据和代码。
付款方式反映在payment_method中。让我们说,如果支付方式是A,那么客户id应该引用表A,如果是B,那么它引用B,以此类推...
例如,customer_id为123的customer选择了“Cashapp”,那么customers_cashapp表中应该有一个id为123的记录。这个约束在mysql中可能存在吗

jv4diomz

jv4diomz1#

我不清楚您打算如何使用带有fk约束的表,但看起来您很可能可以用更好的方式设计数据库。也就是说,您可以在生成的列上使用约束来实现这一点:

create table customers_payment_method (
customer_id int not null,
payment_method varbinary(8),
customer_id_cashapp int as
  (case payment_method when 'cashapp' then customer_id end) stored,
customer_id_paypal int as
  (case payment_method when 'paypal' then customer_id end) stored,
constraint cidcashapp foreign key (customer_id_cashapp) references customers_cashapp(customer_id),
constraint cidpaypal foreign key (customer_id_paypal) references customers_paypal(customer_id)
);

fiddle

相关问题