【发布时间】:2021-04-26 01:45:25
【问题描述】:
我正在尝试创建两个函数,一个用于插入,另一个用于从该表中删除行:
CREATE TABLE person
firstName |lastName |age
Lebron |James |35
Steph |Curry |33
Kevin |Durant |31
Nikola |Jokic |26
我被要求使用 3 个参数作为函数 ,firstName , lastName,age 的输入来创建这 2 个函数。
就插入而言,我创建函数没有问题:
CREATE OR REPLACE FUNCTION insert_function(firstName character varying(45)
,lastName character varying(45) ,age character varying(45))
-
RETURNS void AS
$$
BEGIN
INSERT INTO person (firstName , lastName , age)
VALUES (firstName , lastName , age);
END;
$$
LANGUAGE 'plpgsql';
虽然我的表中列的名称和函数的参数相同,但我没有遇到任何问题。如果有什么看起来不对的地方,请随时提出。
另一方面,当我尝试创建删除功能时,它并不顺利:
CREATE OR REPLACE FUNCTION insert_function(firstName character varying(45)
,lastName character varying(45) ,age character varying(45))
-
RETURNS void AS
$$
BEGIN
DELETE FROM person
WHERE firstName = NEW.firstName AND lastName=NEW.lastName AND age=NEW.age;
END;
$$
LANGUAGE 'plpgsql';
我收到了这条消息: 错误:列引用“firstName”不明确
我知道这个问题是因为函数的参数和列的名称相同。有人可以帮我解决这个问题吗?
谢谢。
【问题讨论】:
-
你为什么不重命名你的函数参数呢?这是推荐的方法
标签: postgresql insert plpgsql