gpt4 book ai didi

mysql - 从属列约束

转载 作者:行者123 更新时间:2023-11-29 17:34:28 25 4
gpt4 key购买 nike

不确定我是否可以使用mysql约束来实现这一点,但是在像这样的表中

CREATE TABLE constraint_table (
id int PRIMARY KEY AUTOINCREMENT,
col1 int NOT NULL,
col2 int NOT NULL
)

是否可以有一个 mysql 约束,使得 col2 对于给定的 col1 可以有重复项

| id | col1 | col2 |
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 1 |

但特定 col1 值使用的 col2 值不能再次被另一个 col1 值使用

| id | col1 | col2 |
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 1 |
| 4 | 2 | 1 | invalid - as 1 is included in col2 values where col1 <> 2 (need to restrict this)
| 5 | 2 | 2 | invalid - as 2 is included in col2 values where col1 <> 2 (need to restrict this)
| 6 | 2 | 4 | valid - as 4 is not included in col2 values where col1 <> 2

有效的表格应该如下所示

| id | col1 | col2 |
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 1 |
| 4 | 2 | 3 |
| 5 | 2 | 4 |
| 6 | 2 | 4 |

抱歉,标题不好,我不知道如何称呼这种场景。

最佳答案

玩得开心!

CREATE TABLE ref_data (
col1 INT NOT NULL,
col2 INT NOT NULL,
INDEX (col1),
UNIQUE KEY (col2)
) ENGINE=INNODB;

CREATE TABLE constraint_table (
id int NOT NULL auto_increment,
col1 int NOT NULL,
col2 int NOT NULL,
PRIMARY KEY (id),
CONSTRAINT cn_col FOREIGN KEY (col1,col2)
REFERENCES ref_data (col1,col2)
ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=INNODB;

关于mysql - 从属列约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50404770/

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