3

我正在使用 sql-interactive-mode 连接到 2 个数据库:MySQL 和 SQLite。我在文件夹中为 mysql 创建了 yasnippets yasnippets/sql-interactive-mode。例如,要在 MySQL 中添加一列,我使用以下代码段:

# -*- mode: snippet -*-
# name: Add column
# key: addcol
# --
ALTER TABLE $1 ADD COLUMN \`$2\` $3;

但是 SQLite 使用不同的语法。如何为不同的数据库创建不同的 yasnippets?

4

1 回答 1

5

正如这里所解释的,您可以将任意 Emacs Lisp 代码(包含在反引号中)yasnippet添加到将在它们展开时进行评估的片段。在sql-mode其中sql-interactive-mode有一个名为的变量sql-product,您可以检查该变量以确定您当前正在使用的数据库类型( mysqlsqlite、等)。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;

对于其他类型的数据库。

于 2014-08-18T07:26:09.193 回答