gpt4 book ai didi

MySQL 问题 - 唯一键无法正常运行,还是我误解了?

转载 作者:IT老高 更新时间:2023-10-29 00:07:25 26 4
gpt4 key购买 nike

我正在尝试创建一个关系,其中可以包含四个不同部分中的任何一个,但相同部分的任何集合都应作为唯一处理。

例子:一项任务必须有一个指定的公司,可以选择有一个指定的位置、工作组和程序。作业可能没有没有位置的工作组。

假设我们有公司 A、B、C; X、Y、Z 位置;工作组 I、J、K 和程序 1、2、3。

所以有效的关系可以包括一个 - X - 我 - 1A - Z - 2经过CC - 3B - Z - K

但无效关系包括A - K(没有位置的工作组)Y - K - 1(无公司)

所以,为了创建我的表,我创建了

companyID INT NOT NULL,
FOREIGN KEY companyKEY (companyID) REFERENCES company (companyID),
locationID INT,
FOREIGN KEY locationKEY (locationID) REFERENCES location (locationID),
workgroupID INT,
FOREIGN KEY workgroupKEY (workgroupID) REFERENCES workgroup (workgroupID),
programID INT,
FOREIGN KEY programKEY (programID) REFERENCES program (programID),
UNIQUE KEY companyLocationWorkgroupProgramKEY (companyID, locationID, workgroupID, programID)

我认为这会处理我所有的关系,除了如果有一个工作组(我认为我可以很高兴地以编程方式或使用触发器来完成)的分配必须有一个位置之外

但是,当我测试这个架构时,它允许我输入以下...

INSERT INTO test VALUES (1, null, null, null), (1, null, null, null);

...毫无怨言。我猜 (1, null, null, null) 不等于自身,因为包含空值。如果是这种情况,我有什么办法可以处理这种关系吗?

如有任何帮助,我们将不胜感激!

最佳答案

这是一个功能(虽然也不是我所期望的)。

This thread建议将您的 key 设为主键以获得您期望的行为:

This is a feature - a NULL value is an undefined value, therefore two NULL values are not the same. Can be a little confusing but makes sense when you think about it.

A UNIQUE index does ensure that non-NULL values are unique; you could specify that your column not accept NULL values.

关于MySQL 问题 - 唯一键无法正常运行,还是我误解了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/429805/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com