sql-插入每个分区的无间隙序列号
发布时间:2022-05-18 12:37:41 281
相关标签: # 数据库
我有一个带有触发器的表,它为每个客户设置一个订单号,我经常在该表中遇到一个唯一键:
SQLSTATE[23505]: Unique violation: 7 ERROR: duplicate key value violates unique constraint "order_customer_unique"
触发器定义为BEFORE INSERT ON orders FOR EACH ROW
.
有什么技术可以解决表中的并发问题吗?
理想情况下,每个客户的数字是一个序列,不会丢失数字。
CREATE OR REPLACE FUNCTION "public"."trigger_set_order_customer_number"()
RETURNS "pg_catalog"."trigger" AS
$BODY$
BEGIN
NEW.sequence = (
SELECT COALESCE( MAX ( order.sequence), 0 ) + 1
FROM orders
WHERE orders.customer_type = NEW.customer_type
AND orders.customer_id = NEW.customer_id
AND orders.model_id = NEW.model_id LIMIT 1);
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报