MySql多表约束

时间:2012-04-23 20:21:32

标签: mysql unique-constraint

简单的股票数据库有3个表:股票行情表,交易所表和货币表。 ticker表有两列:符号列(例如:IBM),以及交换表中行的外键。 交换表有两列:名称列(例如:NYSE)和货币表中行的外键。 货币表有一列:符号(例如:USD)。 (我已经省略了每个表的主键列。)

如何强制执行约束,即同一货币不应该有两次相同的股票代码?即,我只想允许一个(IBM + USD)。 (ticker.symbol + ticker.exchange)创建一个唯一约束是不够的; (IBM + NASDAQ)如果已经存在(IBM + NYSE),则无效。我以为我可以创建一个加入自动收报机表和货币表的视图,并在(view.ticker + view.currency)上创建一个唯一索引;但是,就我现在所知,人们无法在视图上创建索引。

1 个答案:

答案 0 :(得分:1)

我不认为可以在MySQL中指定此约束,但可以使用triggers来检查这些组合是否已经存在(如果他们这样做会引起错误);但请注意,在插入自动收报机表之前和所有三个表上的更新之前,您需要有触发器。