您好我有一个关于外键的小问题:
我有我的表员工,我的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 迁移的更具体的问题:如何创建聚集索引?