【问题标题】:handling not null for optional fields处理可选字段的非空值
【发布时间】:2020-12-07 00:33:18
【问题描述】:

假设前端有一个用于用户注册的输入表单。用户可以通过全名或公司名称进行注册。在这种情况下处理空数据类型的最佳方法是什么?数据类型应该是NOT NULL,默认值是什么?可能不是每个用户在注册时都会同时使用全名和公司名称。

CREATE TABLE customer(
    company_name VARCHAR(255),
    full_name VARCHAR(255)
)

【问题讨论】:

    标签: sql postgresql create-table check-constraints sql-null


    【解决方案1】:

    null通常是表示数据缺失的方式;在您描述的场景中,使用默认值似乎没有帮助。

    那么:默认情况下,列可以为空。如果您想强制执行一个规则,即两列中至少有一个不应该为空,您可以使用检查约束。向表中添加串行主键也是一个好主意。

    create table customer(
        customer_id serial primary key,
        company_name varchar(255),
        full_name varchar(255),
        check (company_name is not null or full_name is not null)
    );
    

    【讨论】:

    • 完美运行。我不知道检查约束。感谢您的建议!
    • 我实际上认为空字符串会更好,但这是一个品味问题。
    猜你喜欢
    • 1970-01-01
    • 2023-02-16
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 2017-04-04
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    相关资源
    最近更新 更多