我可以使用环境变量(Bash)将 PRAGMA 传递给 sqlite3 吗?

我可以使用环境变量(Bash)将 PRAGMA 传递给 sqlite3 吗?

SQLite3PRAGMA FOREIGN_KEYS = OFF默认设置。当然,这会引发问题。

我知道我可以通过将命令放入 中来永久打开 PRAGMA ~/.sqliterc,但问题是它会影响 SQLite3 的每次调用,而不仅仅是我自己的。这可能会导致其他已安装的脚本出现意外结果。因此,我想避免使用~/.sqliterc.

请注意,我在 Bash 脚本中使用 SQLite3(不是从终端输入)。

解决这个问题的一种方法是记住在每次调用 SQLite3 时需要添加 PRAGMA,例如

sqlite3 -cmd 'PRAGMA FOREIGN_KEYS = ON' example.db <<-END_CMD
    ...
END_CMD

(我可以找到其他更加混乱的方法。)

这样做的问题是很容易忘记,尤其是在维护旧代码时。

那么,有没有一种方法可以“暂时永久”打开它,我的意思是在脚本的整个持续时间内打开它?例如,我想知道是否可以将其放入环境变量中,例如

export PRAGMA_FOREIGN_KEYS=ON    # This doesn't work.

或类似的东西。

有没有办法做到这一点,或者使用-cmd最简单的方法?

答案1

sqlite3pragma()
{
    sqlite3 -cmd 'PRAGMA FOREIGN_KEYS = ON' "$@"
}
sqlite3pragma example.db <<-END_CMD
    ...
END_CMD

相关内容