我使用sql-interactive-mode连接到2个数据库:MySQL和SQLite。我在yasnippets/sql-interactive-mode
文件夹中为mysql创建了yasnippets。例如,要在MySQL中添加一列,我使用以下代码段:
# -*- mode: snippet -*-
# name: Add column
# key: addcol
# --
ALTER TABLE $1 ADD COLUMN \`$2\` $3;
但SQLite使用不同的语法。如何为不同的数据库创建不同的yasnippets?
答案 0 :(得分:4)
正如here所解释的那样,您可以将任意Emacs Lisp代码(包含在反引号中)添加到yasnippet
代码段中,这些代码段将在展开时进行评估。在sql-mode
和sql-interactive-mode
中有一个名为sql-product
的变量,您可以检查该变量以确定哪种类型的数据库(mysql
,sqlite
,postgres
等等。你目前正在与之合作。
这基本上就是你需要知道的。以下是如何修改addcol
代码段的示例:
# ...
ALTER TABLE $1 `(if (eq sql-product 'mysql) "ADD" "FROB")` COLUMN \`$2\` $3;
这将扩展为
ALTER TABLE $1 ADD COLUMN \`$2\` $3;
代表mysql
和
ALTER TABLE $1 FROB COLUMN \`$2\` $3;
用于其他类型的数据库。