Как получить доступ к таблицам в другой схеме в корме?
В SQL доступ к таблицам в другой схеме прост:
select *
from other_schema.t
where ...
Как я могу сделать это в корме? Что я на самом деле должен сделать, это получить доступ information_schema.tables
Таблица. Так что определяя другой db
от defdb
не поможет
Я попытался определить сущность, однако не удалось.
(defentity information_schema.tables)
2 ответа
Решение
Я должен знать, что есть способ указать базовую таблицу при определении сущности. При указании базовой таблицы она позволяет установить схему с .
,
(defentity tables
(table :information_schema.tables))
Это прекрасно работает для доступа information_schema.tables
таблица, не определяя другую базу данных.
Вы должны быть в состоянии сделать это, определив другую базу данных. Я могу создать БД, как это:
CREATE database my_db;
USE my_db;
CREATE TABLE stuff (
things VARCHAR(255)
);
INSERT INTO stuff (things) VALUES ("some things");
Теперь я определяю две базы данных и сущности 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"})