在SQL中,访问其他模式中的表很简单:
select *
from other_schema.t
where ...
我怎么能在科尔马这样做?我实际要做的是访问information_schema.tables
表。因此,按db
定义另一个defdb
并不会有所帮助。
我试图定义实体,但失败了。
(defentity information_schema.tables)
答案 0 :(得分:2)
我必须知道在定义实体时有一种方法可以指定基表。指定基表时,它允许使用.
设置架构。
(defentity tables
(table :information_schema.tables))
这适用于访问information_schema.tables
表,而无需定义另一个数据库。
答案 1 :(得分:0)
您应该可以通过定义另一个db来完成此操作。我可以像这样创建一个db:
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"})