MYSQL ON UPDATE CASCADE仅适用于1列

时间:2012-09-09 06:22:05

标签: mysql

我有以下架构:

       tbl_tag
--------|------
name        count
apple         2
orange        5


     tbl_lookup_tag
--------|---------
doc_id        tag
1            apple
1            orange
2            apple

  foreign key (tag) references tbl_tag (name)
    on update cascade on delete cascade

我想要的是tbl_lookup_tag.tag仅在更改tbl_tag.name时更新,而在tbl_tag.count更改时不更新。这可能吗?

1 个答案:

答案 0 :(得分:1)

不是通过名称引用tbl_tag而是创建代理主键(整数,自动增量)并通过它引用。

在这种情况下,您可以毫无后顾之忧地重命名您的标签。

所以你的新架构看起来像是:

tbl_tag: id | name | count
          ^
          |----------------|
                           v
tbl_lookup_tag: doc_id | tag_id