【发布时间】:2017-07-04 12:45:44
【问题描述】:
如果我正在设计一个包含以下字段的表格 column_one、column_two、column_three,并且我希望组合 (column_one:column_two) 是唯一的,我会执行以下操作:
column_one: { type: DataTypes.INTEGER, unique: 'composite_one'},
column_one: { type: DataTypes.INTEGER, unique: 'composite_one'},
column_three: { type: DataTypes.INTEGER}
如果我需要两个独特的组合,都包括其中一个字段,该怎么办?例如:(column_one:column_two) 和 (column_one:column_three) 必须都是唯一的,但 (column_two:column_three) 可以重复
理论上应该是这样的:
column_one: { type: DataTypes.INTEGER, unique: 'composite_one', unique: 'composite_two'},
column_one: { type: DataTypes.INTEGER, unique: 'composite_one'},
column_three: { type: DataTypes.INTEGER, unique: 'composite_two'}
这不是连接表,我不想使用任何原始查询。
另外,column_one 必须与 2 和 3 创建唯一的组合,但这并不意味着第一列、第二列和第三列必须创建一个唯一的组合。
如果解释不清楚,我举个例子:
column_one ----- column_two ---- column_three
-11---------------12----------------13-------
-11---------------12----------------14-------
-18---------------12----------------15-------
不是一组有效的数据,因为有两行 (column_one: column_two) = (11:12)
但是
column_one ----- column_two ---- column_three
-11---------------12----------------13-------
-11---------------17----------------12-------
-18---------------12----------------15-------
-11---------------12----------------15-------
是一组有效的数据
【问题讨论】:
标签: sequelize.js composite-key unique-key