您可以使用原始 SQL 定义的 Knex.js 创建视图吗?
Can you create views using Knex.js defined by raw SQL?
编写迁移以创建基于原始视图的视图 SQL 无提示失败。没有出现错误消息,但没有在数据库中创建任何内容。
下面的代码使用通用查询(实际查询使用 window 函数,因此需要原始 SQL)。
const DAILY_SESSIONS_QUERY = `select session_ids from sessions group by days`;
export async function up(knex: Knex): Promise<void> {
knex.schema.createViewOrReplace('daily_sessions_view', function (view) {
knex.raw(DAILY_SESSIONS_QUERY);
})
}
最终弄清楚并得出以下结果:
const DAILY_SESSIONS_QUERY = `(select session_ids from sessions group by days) as q`;
export async function up(knex: Knex): Promise<void> {
return knex.schema.createViewOrReplace('daily_sessions_view', function (view) {
view.columns(['session_ids']);
view.as(knex.select('*').fromRaw(DAILY_SESSIONS_QUERY));
})
}
编写迁移以创建基于原始视图的视图 SQL 无提示失败。没有出现错误消息,但没有在数据库中创建任何内容。
下面的代码使用通用查询(实际查询使用 window 函数,因此需要原始 SQL)。
const DAILY_SESSIONS_QUERY = `select session_ids from sessions group by days`;
export async function up(knex: Knex): Promise<void> {
knex.schema.createViewOrReplace('daily_sessions_view', function (view) {
knex.raw(DAILY_SESSIONS_QUERY);
})
}
最终弄清楚并得出以下结果:
const DAILY_SESSIONS_QUERY = `(select session_ids from sessions group by days) as q`;
export async function up(knex: Knex): Promise<void> {
return knex.schema.createViewOrReplace('daily_sessions_view', function (view) {
view.columns(['session_ids']);
view.as(knex.select('*').fromRaw(DAILY_SESSIONS_QUERY));
})
}