0

SQL では、他のスキーマのテーブルへのアクセスは簡単です。

select * 
from other_schema.t
where ...

コルマでこれを行うにはどうすればよいですか? 私が実際に行うことは、information_schema.tablesテーブルにアクセスすることです。したがって、別のdbbyを定義してdefdbも役に立ちません。

エンティティを定義しようとしましたが、失敗しました。

(defentity information_schema.tables)
4

2 に答える 2

2

エンティティを定義するときにベース テーブルを指定する方法があることを知りました。ベーステーブルを指定すると、 でスキーマを設定できます.

(defentity tables
  (table :information_schema.tables))

information_schema.tablesこれは、別のデータベースを定義せずに、テーブルにアクセスするためにうまく機能します。

于 2014-11-14T05:40:01.653 に答える
0

別のデータベースを定義することでこれを行うことができるはずです。次のようなデータベースを作成できます。

CREATE database my_db;
USE my_db;
CREATE TABLE stuff (
  things VARCHAR(255)
);
INSERT INTO stuff (things) VALUES ("some things");

ここで、2 つの Korma データベースとエンティティを定義し、クエリを実行します。

(defdb my-db (mysql {:host "localhost" 
                     :port 3306 
                     :db "my_db"
                     :user "root"
                     :password nil}))

(defdb information-schema (mysql {:host "localhost" 
                                  :port 3306 
                                  :db "information_schema" 
                                  :user "root" 
                                  :password nil}))


(defentity stuff)

(defentity information-schema)

(select stuff
        (database my-db))

;; => ({:things "some things"})

(select TABLES 
        (database information-schema) 
        (fields :TABLE_SCHEMA :TABLE_NAME) 
        (where {:TABLE_SCHEMA "my_db"}))

;; => ({:TABLE_NAME "stuff", :TABLE_SCHEMA "my_db"})
于 2014-11-12T16:54:11.240 に答える