Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Emacs:如何在sql交互模式下为不同的RDBMs创建数据集_Emacs_Yasnippet_Sql Interactive Mode - Fatal编程技术网

Emacs:如何在sql交互模式下为不同的RDBMs创建数据集

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?如前所述,您可以将

我使用sql交互模式连接到两个数据库:MySQL和SQLite。我在
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;
对于其他类型的数据库