本文介绍了MySQL外键允许NULL?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在拼凑图像网站。基本模式相当简单的MySQL,但我有一些麻烦,试图表示与图像(不适当,版权等)相关联的可能的管理标志。我目前的想法如下:

  tblImages(
imageID INT UNSIGNED NOT NULL AUTO_INCREMENT,
.. 。
);

tblImageFlags(
imageFlagID INT UNSIGNED NOT NULL AUTO_INCREMENT,
imageID INT UNSIGNED NOT NULL,
flagTypeID INT UNSIGNED NOT NULL,
resolutionTypeID INT UNSIGNED NOT NULL ,
...
);

luResolutionTypes(
resolutionTypeID INT UNSIGNED NOT NULL AUTO_INCREMENT,
resolutionType VARCHAR(63)NOT NULL,
...
);

(为方便阅读而截断;分发的外键和索引是顺序的, p>

tblImageFlags.flagTypeID 是外键锁定在标记类型的查找表上,您可以想象 tblImageFlags.resolutionTypeID 应在 luResolutionTypes.resolutionTypeID 上外键。现在的问题是,当一个标志首次发出时,没有逻辑分辨率类型(我会声明这是一个很好的使用 NULL );但是,如果一个值被设置,它应该被外键到查找表。



我找不到一个MySQL语法解决这种情况。它存在吗?最好的选手是:




  • 添加未经审核的解析类型

  • 添加 NULL 条目 luResolutionTypes.resolutionTypeID (这甚至可以在 AUTO_INCREMENT column?)



感谢您的了解!








后续:感谢Bill Karwin指出原来是表结构中的语法错误(不要将列设置为 NOT NULL 如果你想让它允许 NULL !)。一旦我有足够的因果给你这些奖励点,我会:)

解决方案

c $ c> NULL 在外键列 tblImageFlags.resolutionTypeID 。





根据:Bryan A. Garner:

这篇关于MySQL外键允许NULL?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-03 09:35