gpt4 book ai didi

Mysql 唯一约束允许单行组合

转载 作者:行者123 更新时间:2023-12-01 10:34:33 25 4
gpt4 key购买 nike

是否可以有一个唯一的约束,使得一个特定的列只有一次值?

例如

-----------------------    
name | price | default
-----------------------
XYZ | 20 | TRUE
-----------------------
XYZ | 30 | FALSE
-----------------------
XYZ | 40 | FALSE
-----------------------
ABC | 50 | FALSE
-----------------------

所以在上表中,对于特定的 name值(value), default value 只能为 TRUE 一次。并且将对名称和价格列有唯一的约束。

这可能吗?

最佳答案

normal这样做的方法是提取一个单独的表来保存默认价格:

CREATE TABLE price (
name VARCHAR(255),
price INT,
PRIMARY KEY (name, price)
) ;

CREATE TABLE defaultPrice (
name VARCHAR(255),
price INT,
PRIMARY KEY (name),
FOREIGN KEY(name, price) REFERENCES price(name, price)
);

大多数人会建议引入代理键:
CREATE TABLE item (
id INT PRIMARY KEY,
name VARCHAR(255),
UNIQUE(name)
);

CREATE TABLE price (
itemId INT,
price INT,
PRIMARY KEY (itemId, price),
FOREIGN KEY (itemId) REFERENCES item (id)
) ;

CREATE TABLE defaultPrice (
itemId INT,
price INT,
PRIMARY KEY (itemId),
FOREIGN KEY (itemId, price) REFERENCES price (itemId, price)
);

关于Mysql 唯一约束允许单行组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38016280/

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