续集独特的复合材料失败
Sequelize unique composites fails
我有以下表格:
class Occurrence extends Model {}
Occurrence.init({
date: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: Sequelize.NOW,
unique: 'uniqueOccurrence'
}
}, {
sequelize,
modelName: 'Occurrence'
});
class Event extends Model {}
Event.init({
title: {
type: DataTypes.STRING,
allowNull: false,
},
}, {
sequelize,
modelName: 'Event'
});
与以下关联:
Event.hasMany(Occurrence, { onDelete: 'CASCADE', foreignKey: { unique: 'uniqueOccurrence' } });
Occurrence.belongsTo(Event);
我正在尝试有一个复合唯一约束,它基本上只会在 occurrence.date
和 Event.id
一起不唯一时才会失败。
更新
复合假设在``occurrence.EventIdnot
event.id`
但是由于某种原因失败了。
如果您希望创建一个包含两个字段的唯一索引,其中一个是外键,您应该明确定义它,以便能够指示与 date
字段中指示的相同的唯一索引名称:
EventId: {
type: DataTypes.INTEGER,
allowNull: false,
unique: 'uniqueOccurrence'
},
date: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: Sequelize.NOW,
unique: 'uniqueOccurrence'
}
并更正关联:
Event.hasMany(Occurrence, { onDelete: 'CASCADE', foreignKey: 'EventId' });
Occurrence.belongsTo(Event, { foreignKey: 'EventId' });
如果你希望使用两个字段作为外键,那么 Sequelize 不能这样做(并且 foreignKey
选项没有 unique
属性)。
我有以下表格:
class Occurrence extends Model {}
Occurrence.init({
date: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: Sequelize.NOW,
unique: 'uniqueOccurrence'
}
}, {
sequelize,
modelName: 'Occurrence'
});
class Event extends Model {}
Event.init({
title: {
type: DataTypes.STRING,
allowNull: false,
},
}, {
sequelize,
modelName: 'Event'
});
与以下关联:
Event.hasMany(Occurrence, { onDelete: 'CASCADE', foreignKey: { unique: 'uniqueOccurrence' } });
Occurrence.belongsTo(Event);
我正在尝试有一个复合唯一约束,它基本上只会在 occurrence.date
和 Event.id
一起不唯一时才会失败。
更新
复合假设在``occurrence.EventIdnot
event.id`
但是由于某种原因失败了。
如果您希望创建一个包含两个字段的唯一索引,其中一个是外键,您应该明确定义它,以便能够指示与 date
字段中指示的相同的唯一索引名称:
EventId: {
type: DataTypes.INTEGER,
allowNull: false,
unique: 'uniqueOccurrence'
},
date: {
type: DataTypes.DATE,
allowNull: false,
defaultValue: Sequelize.NOW,
unique: 'uniqueOccurrence'
}
并更正关联:
Event.hasMany(Occurrence, { onDelete: 'CASCADE', foreignKey: 'EventId' });
Occurrence.belongsTo(Event, { foreignKey: 'EventId' });
如果你希望使用两个字段作为外键,那么 Sequelize 不能这样做(并且 foreignKey
选项没有 unique
属性)。