【发布时间】:2020-06-06 17:49:36
【问题描述】:
我在 postgres 中有两个表, 我想创建一个函数,该函数在借贷表中没有超过 2 个具有相同人员 ID 的贷款。 示例:在贷款表中,我不能有 3 笔来自同一个人的贷款,即我们用同一个人的 id 贷款。
我需要使用一个函数来做这件事,我把我想要做的,但它没有工作
CREATE TABLE person (
name_person varchar (100) ,
id_person varchar(14) primary key
)
CREATE TABLE lending(
id_lending primary key (100) ,
id_publication (14) FK,
id_person fk REFERENCES id_person (person)
CREATE OR REPLACE FUNCTION check_numlending()
RETURNS trigger AS
$BODY$
BEGIN
IF( select * from lending
inner join person
on person.id_person = lending.id_person > 2 ) THEN
RAISE EXCEPTION 'ERROR';
END IF;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql;
-- Trigger
CREATE TRIGGER
trg_check_num_lending
BEFORE INSERT OR UPDATE ON
lendingFOR EACH ROW EXECUTE PROCEDURE check_numlending();
【问题讨论】:
-
NEW.id_person = person.id_person > 2应该做什么?如果要对现有表数据进行某些条件验证,需要在函数内部执行SELECT -
你好,我修复了这部分,我想要的差不多就是那个......但是如何检查借贷表中的id_person是否超过两倍?
-
好吧,如果您想了解查询结果中有多少行,通常使用
SELECT COUNT(*)... 建议您先学习 SQL 的基础知识;否则,您将很难编写 DB 过程和函数 -
我现在知道了,感谢您帮助我解决问题
标签: sql postgresql function