Emacs:如何在sql交互模式下为不同的RDBMs创建数据集
我使用sql交互模式连接到两个数据库:MySQL和SQLite。我在Emacs:如何在sql交互模式下为不同的RDBMs创建数据集,emacs,yasnippet,sql-interactive-mode,Emacs,Yasnippet,Sql Interactive Mode,我使用sql交互模式连接到两个数据库:MySQL和SQLite。我在yasnippets/sql交互模式文件夹中为mysql创建了yasnippets。例如,要在MySQL中添加列,我使用以下代码段: # -*- mode: snippet -*- # name: Add column # key: addcol # -- ALTER TABLE $1 ADD COLUMN \`$2\` $3; 但是SQLite使用不同的语法。如何为不同的数据库创建不同的yasnippet?如前所述,您可以将
yasnippets/sql交互模式
文件夹中为mysql创建了yasnippets。例如,要在MySQL中添加列,我使用以下代码段:
# -*- mode: snippet -*-
# name: Add column
# key: addcol
# --
ALTER TABLE $1 ADD COLUMN \`$2\` $3;
但是SQLite使用不同的语法。如何为不同的数据库创建不同的yasnippet?如前所述,您可以将任意Emacs Lisp代码(用反引号括起来)添加到yasnippet
片段中,这些片段将在展开时进行计算。在sql模式
和sql交互模式
中,有一个名为sql产品
的变量,您可以检查该变量以确定当前使用的数据库类型(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;
对于其他类型的数据库