如何检查其中一个值是否存在
How to check if one of the values is present
我正在对旧架构进行更改,新要求是 table 中有 3 个不同的列。至少要填一个ID。
我正在考虑实施服务以在插入之前检查是否存在任何字段。但仍然想知道是否有解决方案可以在数据库端实现这一点。
假设 table 看起来像这样:
businessId int businessId or userId or followerId
userId int businessId or userId or followerId
followerId int businessId or userId or followerId
我无法将这些字段中的任何一个标记为必填,因为插入数据时可能会插入到不同的列中。因此,如果存在任何字段,它应该允许数据库插入。
我了解到您正试图在 3 列上设置复合 NOT NULL
约束。在 Postgres 中,您可以按如下方式设置检查约束:
ALTER TABLE mytable
ADD CONSTRAINT at_least_one_non_null
CHECK (
businessId IS NOT NULL
OR userId IS NOT NULL
OR followerId IS NOT NULL
);
这将确保每条记录的 3 列中至少有一个不为空。
我正在对旧架构进行更改,新要求是 table 中有 3 个不同的列。至少要填一个ID。
我正在考虑实施服务以在插入之前检查是否存在任何字段。但仍然想知道是否有解决方案可以在数据库端实现这一点。
假设 table 看起来像这样:
businessId int businessId or userId or followerId
userId int businessId or userId or followerId
followerId int businessId or userId or followerId
我无法将这些字段中的任何一个标记为必填,因为插入数据时可能会插入到不同的列中。因此,如果存在任何字段,它应该允许数据库插入。
我了解到您正试图在 3 列上设置复合 NOT NULL
约束。在 Postgres 中,您可以按如下方式设置检查约束:
ALTER TABLE mytable
ADD CONSTRAINT at_least_one_non_null
CHECK (
businessId IS NOT NULL
OR userId IS NOT NULL
OR followerId IS NOT NULL
);
这将确保每条记录的 3 列中至少有一个不为空。