mysql - 是否可以在 phpmyadmin 中为外键约束添加条件?

标签 mysql database phpmyadmin foreign-keys cascading-deletes

我有两个表:消息和产品。 Message表中有一个sourceid,等于Product表下的ProductId。

产品有一个产品 ID (productID),用户可以向卖家发送有关该产品的消息。对于这些消息,如果它们与特定产品相关,则会为它们提供一个 sourceid,这基本上就是产品 ID。如果消息与任何产品无关,sourceid 将设置为 0。

我可以设置外键约束,每当卖家删除产品时删除消息条目,所有相关消息都将被删除。

但是,我发现所有与产品无关的消息,sourceid设置为0,都没有保存在数据库中。显然,因为没有productid = 0的产品,外键约束会立即删除消息条目(sourceid = 0)。

有没有办法在 phpmyadmin 中设置条件?如果我可以设置外键约束只在 sourceid > 0 时执行,那么系统应该可以运行。但是我不确定如何设置这个条件,或者 phpmyadmin 是否允许设置这个条件。

请帮忙。非常感谢。

最佳答案

是的,如果外键与某些消息不相关,则使 product_id 外键列可为空。当您不想引用任何产品时,存储 NULL 而不是 0。出于外键引用的目的,将忽略 NULL。

这实际上与我回答的这些过去的问题相同:

关于mysql - 是否可以在 phpmyadmin 中为外键约束添加条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44793508/

相关文章:

PHP 使用 2 个 for 循环插入 15k 行

linux - phpmyadmin index.php 文件不见了

mysql - 无法在 MySQL 中创建外键约束

php - 使用 php 连接两个 MySQL 表并对结果进行分组

python - MySQL 取出数据很慢

mysql - 我正在尝试创建一个只有两个外键的表

sql - 访问 Azure 自动备份

MYSQL按十进制10,10排序大型数据库

sql-server - SQL Server 2012 - 创建数据库权限在数据库主机中被拒绝(错误 262)

mysql - REGEX 通过子查询中的 GROUP_CONCAT 值集