1

一个简单的权益数据库有 3 个表:股票代码表、兑换表和货币表。股票代码表有两列:一个符号列(例如:IBM)和一个指向交换表中一行的外键。交换表有两列:名称列(例如:NYSE)和货币表中一行的外键。货币表有一列:一个符号(例如:美元)。 (我省略了每个表的主键列)。

如何强制执行相同货币不应出现两次相同股票代码的约束?即,我只想允许一个(IBM + USD)。在 (ticker.symbol + ticker.exchange) 上创建唯一约束是不够的;(IBM + NASDAQ) 如果已经存在 (IBM + NYSE) 则无效。我想我可以创建一个将股票代码表和货币表连接起来的视图,并在 (view.ticker + view.currency) 上创建一个唯一索引;但是,据我现在所知,无法在视图上创建索引。

4

1 回答 1

1

认为不可能在 MySQL 中指定此约束,但您可以使用触发器来检查此类组合是否不存在(如果存在则引发错误);但是请注意,您需要在在股票代码表上插入之前和在所有三个表上更新之前有触发器。

于 2012-04-23T20:47:40.557 回答