我有 mytable
,它有 3 个整数字段:id
、status
、project_id
。
我已经告诉人们,在为其分配一个 project_id
值之前,他们不应该让状态超过 4。人们自然不会听,然后就会出现问题。
如果有人在 project_id
列为 null
时尝试从状态 4 更新到状态 5,是否有办法返回错误?我仍然需要人们能够将状态从 2 或 3 更新到状态 4,无论它是否具有 project_id
。
最佳答案
您可以使用 CHECK
constraint如果您需要非常简单的检查,请按照@stickbit 的建议。
如果需要更复杂的逻辑,可以使用TRIGGER
functionality
CREATE FUNCTION check_status()
RETURNS trigger AS
$mytrigger$
BEGIN
IF OLD.status = 4 AND NEW.status >= 5 AND NEW.project_id IS NULL THEN
RAISE EXCEPTION 'Project ID must be assigned before progressing to status 5';
END IF;
RETURN NEW;
END
$mytrigger$
LANGUAGE plpgsql;
CREATE TRIGGER project_id_check
BEFORE UPDATE ON "MyTable"
FOR EACH ROW EXECUTE PROCEDURE check_status();
关于sql - 如果另一列为空,禁止用户更新列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54289874/