如果未找到任何行,psql 的返回代码是什么?

3
我希望当没有找到任何记录时,我的psql命令能够失败:
psql -U postgres -d db -c "select * from user where id=1 and name='Joe';"

我希望能够检查返回值。如果至少存在一行,则从进程(!)返回0,如果不存在这样的行,则从psql进程返回非零。如何在未发现行的情况下设置返回代码?


为什么不尝试使用 select count(*) 呢?而且成本更低。 - Dinesh
@Dinesh select count(*) 总是会返回一行。 - Clodoaldo Neto
1
@eatonphil 请查看这个链接,它可能是您需要的,而不使用 grep 命令。 - Houari
1个回答

10
我认为psql本身不能做到这一点,但如果您只想查看是否存在任何行并带有退出状态,您可以将其组合起来使用。
psql -U postgres -d db -t -c "select * from user where id=1 and name='Joe'" | egrep .

如果egrep无法匹配任何内容,将导致其退出非零。 -t 将使其不打印列标题和摘要信息,因此如果需要这些内容,则可能需要调整此命令行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接