sql:48: 错误: 作为一个表达式使用的子查询返回了多列 数据库错误修改psql:tests.

在PL/pgSQL函数中遇到SQL错误:作为一个表达式使用的子查询返回了多列。问题出在尝试使用IF (SELECT ...) NOT NULL判断等待列表是否有人,而应改为IF (EXISTS (SELECT ...))来避免此错误。当等待列表有多人时,子查询返回列表导致错误。解决方案是使用EXISTS关键字进行判断。
摘要由CSDN通过智能技术生成

在这里插入图片描述
psql:tests.sql:48: 错误: 作为一个表达式使用的子查询返回了多列
背景: SQL 语句 “SELECT (SELECT student FROM WaitingList WHERE course=OLD.course) IS NULL”
在IF的第23行的PL/pgSQL函数delete_function()

先写结论:
当想用IF 语句判断是否符合条件的情况时,要注意 IF () NOT NULL 这个很特殊。
如果只是想判断,是不是有满足条件的列表,
要将IF () NOT NULL 改为 IF (EXIST())判断
因为 SELECT 后如果判断条件是好几个信息,则IF () NOT NULL 会报错

数据库运行后返回这个错误,不是很清楚这个错误是什么意思。

在这里插入图片描述
这个是我的数据库程序
我主要是想判断选课系统中的等待列表中是否有人存在,
想用IF ()NOT NULL 判断。
如果选课列表中有人,则满足条件,执行后边的语句。
所以这个语句在判断是否有人在等待列表中。

(Registered表 人数满了以后,会有waiting li

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值