本文介绍了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?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!