问题描述
我一点也不知道为什么postgres抱怨'INSERT'之后的'INTO'这个词。有人知道吗? FWIW我只创建了代码主体,pgAdmin创建了页眉和页脚。
CREATE FUNCTION public.tf_test()
RETURNS trigger
LANGUAGE 'plpgsql'
NOT LEAKPROOF
AS $BODY$BEGIN
DECLARE targetid orderpayment.id%TYPE;
INSERT INTO
orderpayment(currencycode,tableorderid,payment,tip,paymentprocessor)
VALUES
(NEW.currency,NEW.orderid,NEW.amount,NEW.tip,1)
RETURNING id INTO targetid;
NEW.orderpayment = targetid;
RETURN NEW;
END$BODY$;
返回错误
ERROR: Syntax error at or near "INTO"
LINE 8: INSERT INTO
^
CONTEXT: invalid type name "INTO
orderpayment(currencycode,paymentprocessor)
VALUES
(NEW.currency,1)
RETURNING id INTO targetid"
解决方法
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/2.1.3/TweenMax.min.js" integrity="sha512-DkPsH9LzNzZaZjCszwKrooKwgjArJDiEjA5tTgr3YX4E6TYv93ICS8T41yFHJnnSmGpnf0Mvb5NhScYbwvhn2w==" crossorigin="anonymous"></script>
语句应在Declare
之前。因此正确的定义将如下所示:
begin