gpt4 book ai didi

sql - 如何确保 Column_A 仅在 Column_B 为 NULL 时才有值?反之亦然

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

我正在尝试创建一个包含三列的表格:

id

paid_at

failed_at

如何确保 paid_at 仅在 failed_atNULL 时才具有值?

这是我当前的代码:

 CREATE TABLE charges(
id TEXT NOT NULL PRIMARY KEY,
paid_at TEXT,
failed_at TEXT
);

ALTER TABLE charges
ADD CONSTRAINT paid_at CHECK (failed_at IS NULL);

ALTER TABLE charges
ADD CONSTRAINT failed_at CHECK (paid_at IS NULL);

我还想确保 BOTH 不能为空。

我该怎么做?

谢谢!

最佳答案

您可以在检查约束中使用num_nonnulls():

alter table charges 
add constraint only_one_not_null
check (num_nonnulls(paid_at, failed_at) = 1);

确保其中一列不为空,另一列为空。

如果您认为只有空格的字符串也为“null”,您可以将其扩展为:

alter table charges 
add constraint only_one_not_null
check (num_nonnulls(nullif(trim(paid_at),''), nullif(trim(failed_at),'')) = 1);

关于sql - 如何确保 Column_A 仅在 Column_B 为 NULL 时才有值?反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57478656/

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