gpt4 book ai didi

mysql - 使用 MySQL CHECK 确保表中的值与其他表中的值匹配

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

我想要检查我的一个表,以确保输入到其字段之一的值是正确的。

就我而言,我有一个名为“Book”的表和一个名为“Sale”的表。由于每次销售都有一本书的 isbn,因此我应该可以确保输入到 Sale 表中的价格与 Book 表中的 isbn 对应的价格相匹配。我确信我应该在 SQL 中使用 CHECK 约束,但我不知道如何去做。

父表:

CREATE TABLE Book
(
isbn INTEGER NOT NULL,
title VARCHAR(20),
author VARCHAR(20),
price DOUBLE,
PRIMARY KEY (isbn)
);

插入 Book 表:

INSERT INTO Book
VALUES (1, 'A Separate Peace', 'John Knowles' 9.99);

我的 child 表:

CREATE TABLE Sale
(
date DATE,
saleId INTEGER NOT NULL,
isbn INTEGER,
price DOUBLE,
PRIMARY KEY (saleId),
FOREIGN KEY (isbn) REFERENCES Book (isbn),
CHECK (price = (Book (price) WHERE Book (isbn) = isbn))
);

出售的 INSERT 语句示例:

INSERT INTO Sale 
VALUES ('2012-01-01', 1234, 1, 8.99);

请注意,正确的价格是 9.99,而不是 8.99。我希望此 INSERT 返回错误。

最佳答案

您应该在系统的软件部分实现这种业务逻辑。

  • 当您想提供折扣或产品打折时怎么样?
  • 如果假设 1 年前的图书 1 的售价为 9.99,一年后同一本书的价格变为 8.99,该怎么办?

如果您不希望这样,则没有理由将价格保存两次(在两个表中),因此只需从 Sales 表中删除价格列,并在从数据库读取时使用 isbn no 来确定产品价格。

关于mysql - 使用 MySQL CHECK 确保表中的值与其他表中的值匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8964381/

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