首页 > 解决方案 > 如何在 postgresql 中创建函数以返回列值并更新表以及 x 锁定表?

问题描述

我有一个表名 xyz,单列 C1 的值为 100

CREATE OR REPLACE FUNCTION get_complaintID () 
   RETURN TABLE (
      complaintID VARCHAR
) 
AS $$
BEGIN
   RETURN QUERY SELECT
      complaintID
   FROM
      getcomplaint

END; $$ 

LANGUAGE 'plpgsql';

当我将调用此函数时,它应该返回值 100 并用加一更新表,例如 100+1 每次我调用该函数时它应该返回表的值并用一更新表值。之后,它应该在桌子上应用 x 锁

标签: postgresql

解决方案


不,它不应该锁定桌子。您想锁定该,以便在您完成之前没有其他人可以做同样的事情。

UPDATE getcomplaint
SET complaintID = complaintID + 1
RETURNING complaintID - 1;

这将自动锁定该行并阻止尝试执行相同操作的其他所有人。


推荐阅读