gpt4 book ai didi

postgresql - 计算触发器更新前受影响的行数

转载 作者:行者123 更新时间:2023-11-29 11:19:37 25 4
gpt4 key购买 nike

我想知道每个语句触发器在 BEFORE 中受 UPDATE 查询影响的行数。这可能吗?

问题是我只想允许最多更新 4 行的查询。如果受影响的行数为 5 或更多,我想引发错误。

我不想在代码中执行此操作,因为我需要在数据库级别进行此检查。这有可能吗?

在此先感谢您提供任何线索

最佳答案

编写一个函数来为您更新行或执行回滚。抱歉样式格式不佳。

create function update_max(varchar, int)
RETURNS void AS
$BODY$

DECLARE

sql ALIAS FOR $1;
max ALIAS FOR $2;
rcount INT;

BEGIN

EXECUTE sql;
GET DIAGNOSTICS rcount = ROW_COUNT;

IF rcount > max THEN

--ROLLBACK;
RAISE EXCEPTION 'Too much rows affected (%).', rcount;

END IF;

--COMMIT;

END;

$BODY$ LANGUAGE plpgsql

然后像这样调用它

select update_max('update t1 set id=id+10 where id < 4', 3);

第一个参数是您的 sql 语句,第二个参数是您的最大行数。

关于postgresql - 计算触发器更新前受影响的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2560737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com