如何使用附加约束设置外键

xytpbqjk  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(307)

我有一个mysql数据库,包含以下表(innodb):

products
--id
--name 
--description
--parentid

categories2products
--id
--productid

我想为categories2products.productid到prodoucts.id有一个外键,其中parentid=null我该怎么做(有没有可能)我知道如何设置外键,只是不知道如何使用parentid=null。
谢谢

3pmvbmvn

3pmvbmvn1#

关于parentid是什么,这个问题有点不清楚。如果它是指向“products”表的自关系,只需在mysql中将其设置为null即可。外键与此无关,可以正常设置。
如果您的意思是希望外键只在parentid为null时可用,那么这将由使用数据库的应用程序管理。需要定义外键约束,应用程序将在没有父项时填充它,或者在有父项时将其保留为空。
希望有帮助。如果我理解错了,请把问题修改清楚。

c7rzv4ha

c7rzv4ha2#

外键无法完成所需的约束;您通常可以通过使用before触发器来实现更复杂的约束(就像您正在尝试的那个),当不满足约束时,before触发器会“抛出错误”。
然而,这很容易超出实用性。在引用表上使用before insert触发器来防止插入不正确的数据非常简单,就像使用before update触发器来防止不正确的更新一样。。。但是,如果引用的记录以使in不符合引用条件的方式发生更改,则必须解决该问题。如果要模拟外键的级联特性,还需要在引用表上实现触发器。

相关问题