1

所以我有3 张桌子

tbl_client(clientpk, name, etc)
tbl_address(address_pk, street1, street2 etc) 
tbl_client_address (client_address_pk, clientpk_fk, addresspk_fk)

我对触发器不太熟悉,所以也许有人可以告诉我如何实现这一点,当我删除客户端时,它也会删除tbl_client_address. 我知道这可以通过引用来完成,但事实是,由于tbl_client_address被删除,我还希望删除与该客户相关的地址。

可能吗?

4

2 回答 2

1

如果您使用的是 innodb,则可以向主表添加约束:

约束myForeignKey外键 ( typeId) 引用types( id) ON DELETE CASCADE ON UPDATE CASCADE

而不必乱用触发器

于 2012-06-08T15:46:01.260 回答
0

您希望在删除客户端记录时删除地址记录这一事实表明您可能根本不需要 tbl_client_address 解析表。如果给定地址实际上可以与多个客户端相关联,则仅需要 tbl_client_address 表(如果是这种情况,您不希望根据 tbl_client 记录的删除自动级联删除)。所以我要说的是,您应该考虑是否仅拥有一个 tbl_address.clientpk_fk 字段就足够了,完全删除 tbl_client_address 表,然后使用 Jeff 建议的约束来级联 tbl_client 记录删除。

于 2012-06-08T17:08:50.653 回答