我正在尝试创建一个函数,将完整和相关的信息插入到现有的表中。我需要函数来检查另一个表中是否存在某些实体,如果不存在,则插入数据。示例代码如下:
CREATE FUNCTION insert_payment (customer_uuid uuid, customer_name varchar(63), payment_uuid uuid, total_amount integer
假设我想在payments表中输入一个payments。我希望函数检查另一个名为customers的现有表,以查看表中是否已经存在customer\uuid和customer\u name。如果没有,我希望函数将customer_uuid和customer_name信息插入customers,并将所有四个参数的数据输入payments。
这是我第一个关于堆栈溢出的问题,如果需要进一步的澄清,请告诉我。我也是一个学生,仍然在学习如何有效地沟通时谈到编码,所以,再次,如果需要进一步澄清,我会尽我最大的努力。谢谢您!
2条答案
按热度按时间1cklez4t1#
你可以利用
insert on conflict do nothing
插入客户,如果客户已经存在,则跳过插入。所以在这个表定义中:
此函数将执行您想要的操作:
这和首先检查是否存在一样有效(
select exists (...)
)在插入之前,因为insert语句无论如何都会执行该检查。在线演示
mlnl4t2r2#
在知道表字段的名称之后,我可以帮助您更多,但是在这里我共享一个代码,也许它会帮助您