Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 处理可选字段的NOTNULL_Sql_Postgresql_Create Table_Check Constraints_Sql Null - Fatal编程技术网

Sql 处理可选字段的NOTNULL

Sql 处理可选字段的NOTNULL,sql,postgresql,create-table,check-constraints,sql-null,Sql,Postgresql,Create Table,Check Constraints,Sql Null,假设前端有一个用于用户注册的输入表单。用户可以用全名或公司名注册。在这种情况下,处理空数据类型的最佳方法是什么?数据类型是否应为非空,默认值为某物?可能不是每个用户在注册时都会同时使用全名和公司名 CREATE TABLE customer( company_name VARCHAR(255), full_name VARCHAR(255) ) null通常是表示缺少数据的方式;在您描述的场景中,使用默认值似乎没有帮助 然后:默认情况下,列可以为空。如果要强制执行两列中至少有一

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

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

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

然后:默认情况下,列可以为空。如果要强制执行两列中至少有一列不应为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)
);

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

然后:默认情况下,列可以为空。如果要强制执行两列中至少有一列不应为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)
);

工作得很好。我不知道支票的限制。谢谢你的建议!事实上,我认为空字符串在那里会更好,但这是一个品味的问题。效果很好。我不知道支票的限制。谢谢你的建议!我实际上认为空字符串在那里会更好,但这是一个品味的问题。