在mysql中强制执行记录的跨表唯一性

时间:2016-04-30 14:47:10

标签: mysql unique

我有三张桌子:

CREATE TABLE A (
  id            int(11) NOT NULL AUTO_INCREMENT,
  adata         varchar(255),

  PRIMARY KEY  (id)
  );

CREATE TABLE B (
  id            int(11) NOT NULL AUTO_INCREMENT,
  bdata         varchar(255),
  a_id          int(11) NOT NULL,

  PRIMARY KEY  (id),
  FOREIGN KEY (a_id) REFERENCES A(id) ON DELETE CASCADE
  );

CREATE TABLE C (
  id            int(11) NOT NULL AUTO_INCREMENT,
  cdata         varchar(255),
  b_id          int(11) NOT NULL,

  PRIMARY KEY  (id),
  FOREIGN KEY (b_id) REFERENCES B(id) ON DELETE CASCADE
  );

C(与B&s;)关联的元素必须仅对给定的A唯一。即,(cdatab_id.a_id)的组合必须是唯一的。

我意识到我可以在A表中添加另一列(指向C)并创建一个唯一键。有没有办法在不向C添加其他列的情况下强制实现唯一性?

0 个答案:

没有答案