单列中的两个约束

Two constraints in single column

我的 table 包含一个名为 'Email' 的列。现在我想要如果有人提供电子邮件,SQL 检查验证或者如果有人忘记提供电子邮件,SQL 保持默认值 'None'。

我该怎么做?

我不确定您使用的是哪个数据库。这将适用于 Postgresql。

在创建 table 时,像这样在电子邮件列上添加约束,

create table email_test 
(email text  check (email like '%@%.%' or email like 'NONE') default 'NONE');

如果table已经创建,

alter table email_test add constraint check_email check (email like '%@%%' or email like 'NONE');

但是如果有任何行违反指定的约束,这个 ALTER 将失败。