【发布时间】:2021-01-25 16:33:03
【问题描述】:
您好,我有一个关于外键的小问题:
我有我的表员工,我的 ID 为 uuid,我的 MATRICULA 编号(这是独一无二的,每个员工只有一个),在我的部门表中我想使用我的 manager_Id 外键并引用我的 MATRICULA 字段。
但是我不知道这在sql方面是否正确,即它引用了一个外键关系中不是primary的字段
我的表员工:
export async function up(knex: Knex): Promise<void> {
return knex.schema.hasTable('employee').then(function (exists) {
if (exists) return;
return knex.schema // **** udpate
.createTable('employees', table => {
table.uuid('id').notNullable().primary();
table.string('matricula', 100).notNullable().unique('matricula_idx');
table.timestamp('created_at').defaultTo(knex.fn.now());
table.timestamp('updated_at').defaultTo(knex.fn.now());
table.timestamp('deleted_at');
})
.then(() => knex.raw(onUpdateTrigger('employees')));
});
}
我的餐桌部门:
export async function up(knex: Knex): Promise<void> {
return knex.schema.hasTable('employee').then(function (exists) {
if (exists) return;
return knex.schema // **** udpate
.createTable('departaments', table => {
table.uuid('id').notNullable().primary();
table
.string('departament_name', 100)
.notNullable()
.unique('departament_name');
table.uuid('manager_id');
table.timestamp('created_at').defaultTo(knex.fn.now());
table.timestamp('updated_at').defaultTo(knex.fn.now());
table.timestamp('deleted_at');
})
.then(() => knex.raw(onUpdateTrigger('departaments')));
});
}
我还有一个关于 knexjs 迁移的更具体的问题:如何创建聚集索引?
【问题讨论】:
标签: sql typescript knexjs