Bash
我可以使用環境變數(Bash)將 PRAGMA 傳遞給 sqlite3 嗎?
SQLite3
PRAGMA 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
最簡單的方法?
sqlite3pragma() { sqlite3 -cmd 'PRAGMA FOREIGN_KEYS = ON' "$@" }
sqlite3pragma example.db <<-END_CMD ... END_CMD