【发布时间】:2021-07-21 09:54:43
【问题描述】:
我有一个名为 person 的表,它看起来像这样:
CREATE TABLE public.person
(
"idPerson" integer NOT NULL DEFAULT nextval('idperson'::regclass),
fname character varying(45) COLLATE pg_catalog."default",
lname character varying(45) COLLATE pg_catalog."default",
sex character(1) COLLATE pg_catalog."default",
dateofbirth date,
address character varying(75) COLLATE pg_catalog."default",
city character varying(45) COLLATE pg_catalog."default",
country character varying(45) COLLATE pg_catalog."default",
CONSTRAINT "idPerson_PK" PRIMARY KEY ("idPerson")
)
我想通过一个函数执行更新( my_update_function(fname,lname , sex ,dateofbirth,address,city,country) 。我的问题是我不想要一个特定的条件,而是我只想调用这个函数比如这样:
SELECT my_update_function('Jamie','Phillips', 'F',1973-03-08,'Santina Island 108','Okhotsk',Russia)
并仅在不同的列中使用 idPerson 57 更新我的表(在本例中为 fname)
这就是我所做的:
UPDATE person
SET fname=my_update_function.fname , lname=my_update_function.lname
,sex=my_update_function.sex , dateofbirth=my_update_function.dateofbirth
,address=my_update_function.address , city=my_update_function.city
,country=my_update_function.country
WHERE person.fname='Karissa';
我更新了我的表格,但这里的问题是我必须将特定的 fname 'Karissa' 放在函数中,而不是我想自动完成。
我该怎么做?
谢谢。
【问题讨论】:
-
在你想要的自动化函数中,
Karissa这个名字是从哪里来的? -
找到要更新的记录的条件是什么?在
my_update_function的示例中,您没有指定 idPerson。根据您的表定义,没有唯一的约束/索引来识别使用其他字段的记录。请解释函数my_update_function应该使用它接受的参数做什么。 -
@LaurenzAlbe 如果您查看上面的表格,您会看到一个名为 Karissa 的人。这只是尝试检查更新功能应该如何工作
-
@JuliusTuskenis 我被要求创建一个以 (fname,lname,sex,dateofbirth,address, city,country ) 作为输入参数的函数。据我所知,我应该调用 my_update_function 来进行我想要的更新。例如,如果我这样称呼它: my_update_function('Jamie','Phillips','F',1973-03-08,'Santina Island 108','Okhotsk',Russia) 应该找到我要更新的行和然后改变它。例如,我想更新姓名、性别和国家/地区,我想我的函数应该根据保持不变的其他参数找到我想要的人
-
@JuliusTuskenis 至于 idPerson 是主键,我的教授说我不应该在更新函数中使用它作为参数
标签: postgresql datatable sql-update