gpt4 book ai didi

SQL - 创建表时,如何在另一列满足特定要求时使其成为必需列?

转载 作者:行者123 更新时间:2023-12-04 22:11:20 26 4
gpt4 key购买 nike

我正在使用 Microsoft SQL Server Management Studio。所以这就是我现在所拥有的:

CREATE TABLE Product 
(
product_id INT NOT NULL PRIMARY KEY IDENTITY,
product_code CHAR(4) NOT NULL, --For a book use 'BOOK'
product_name VARCHAR(40) NOT NULL,
product_desc VARCHAR(5000),
book_author INT,
book_publisher INT,
product_price SMALLMONEY NOT NULL CHECK (product_price >= 0),
FOREIGN KEY (book_author) REFERENCES Author
);

因此,如果 product_code == 'BOOK',我想让 book_author 和 book_publisher 不能为空。

这可能吗?如何实现?

最佳答案

我会这样做:

CREATE TABLE Product (
product_id INT NOT NULL PRIMARY KEY IDENTITY
, product_code CHAR(4) NOT NULL
, product_name VARCHAR(40) NOT NULL
, product_desc VARCHAR(5000)
, book_author INT
, book_publisher INT
, product_price SMALLMONEY NOT NULL CHECK (product_price >= 0)
, CONSTRAINT CHK_author CHECK (
CASE
WHEN product_code = 'BOOK' AND (book_author IS NULL OR book_publisher IS NULL) THEN 0
ELSE 1
END = 1
)
);

CHK_author 约束将检查您的 product_code 是否为 BOOK,如果是,则检查 book_authorbook_publisherNULL 值。如果其中之一是 - 它将限制声明。

这是 SQL Fiddle

关于SQL - 创建表时,如何在另一列满足特定要求时使其成为必需列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34690681/

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