我正在尝试创建一个检查客户是否存在的交易,如果不存在,请插入该客户。然后更新记录参考该客户的航班预订:
BEGIN;
IF NOT EXISTS (SELECT CustomerID FROM LeadCustomer WHERE CustomerID = 20006)
INSERT INTO LeadCustomer VAlUES(20006, 'Tom', 'Mann', '08, Lilac Street, Oxford',
'tomisawesome@gmail.com');
ROLLBACK;
UPDATE flightBooking Set NumSeats + 2, TotalCost + 100 WHERE EXISTS (CustomerID = 20006);
COMMIT;
END;
问题在于它不喜欢'IF'。为什么是这样?我如何解决这个问题? 非常感谢, 卡勒姆
答案 0 :(得分:2)
您没有正确使用IF
语句。它期望条件后带有THEN
关键字,并应以END IF
终止。
此外,您的UPDATE
语句的语法不是有效的SQL。
最后,在ROLLBACK
之后看不到INSERT
的意图,因此我将其删除了-需要将commit
命令从代码块中删除(pl / pgsql不支持事务。
考虑:
DO $$
BEGIN
IF NOT EXISTS (SELECT CustomerID FROM LeadCustomer WHERE CustomerID = 20006) THEN
INSERT INTO LeadCustomer
VAlUES(20006, 'Tom', 'Mann', '08, Lilac Street, Oxford', 'tomisawesome@gmail.com');
END IF;
UPDATE flightBooking
SET NumSeats = NumSeats + 2, TotalCost = TotalCost + 100
WHERE CustomerID = 20006;
END;
$$
请注意,您需要将代码包装在DO
块中。