需要知道事务是否在脚本中中止

Need to know if transaction is aborting in script

我有一个 shell 脚本,它 运行 是我的数据库的一个 sql 文件,问题是当事务由于任何原因(并发问题等)中止时...) 我想知道它失败了,以便我可以做其他事情,我只是不完全确定如何从命令中读取事务已中止。

'psql returns 0 to the shell if it finished normally, 1 if a fatal error of its own occurs',我想检查返回的非零代码。

例如:

echo 'Deploying SQL'
psql --quiet --single-transaction --file=myfile.sql

该脚本将 运行 放在 cron 上,所以即使它在交易中止时提供错误消息,也没有人每次都在那里阅读它,所以我需要能够在这个时候做一些事情发生了。

例如:

local result = psql --quiet --single-transaction --file=myfile.sql

if [[ result == 1 ]]; then
   # do something else
else
   echo 'successful'
fi

我对 shell 脚本编写还比较陌生,因此非常感谢任何帮助。

您可以 运行 if-else 语句中的命令。

if psql --quiet --single-transaction --file=myfile.sql; then
    echo 'OK'
else
    echo 'KO'
fi

或者通过 $? 查看之前的 return 状态,如下所示:

psql --quiet --single-transaction --file=myfile.sql
local result="$?"
if [[ "$result" == 0 ]]; then
    echo 'OK'
else
    echo 'KO'
fi