我有一张这样的表:
handleImageClick() {
this.setState({ imageDetails : JSON.stringify(this.props.imageDetails,null,"\t")});
console.log(this.state.imageDetails)
this.setState({ selectedReceiptDetails: true }); //Toggles the modal.
}
//Modal that sets this.state.selectedReceiptDetails to the body
function mapStateToProps(state) {
return {
receiptDetails: state.services.receiptDetails,
imageDetails: state.services.imageDetails
}
};
export default connect(mapStateToProps, { getImageDetails })(ReceiptService);
我已经在CAEN_KEY列上定义了主键。我还需要将CAET_KEY和BUUN_KEY的唯一记录放在一起。 (因此,只允许与CAET_KEY / BUUN_KEY相同的组合一次)。最简单的方法是生成一个复合主键,但这是不可能的,因为sql server不允许多个主键约束。有什么替代品?
请注意:我无法删除CAEN_KEY上的主键约束。
答案 0 :(得分:3)
尝试使用唯一键。更改设计如下
CREATE TABLE BACAEN
(
CAEN_KEY INT PRIMARY KEY,
CAET_KEY INT NOT NULL,
BUUN_KEY INT NOT NULL,
CONSTRAINT uq_BACAEN UNIQUE(CAET_KEY , BUUN_KEY );
)
现在,CAET_KEY和BUUN_KEY列都将具有唯一的组合,并且它们不能保留NULL值,因为我已将它们指定为NOT NULL
如果想要允许CAET_KEY和BUUN_KEY的NULL值,那也没关系,但在两个字段中只能有1条带NULL的记录
答案 1 :(得分:1)
ALTER TABLE youtablename ADD CONSTRAINT uq_yourtablename UNIQUE(CAET_KEY , BUUN_KEY );
PS。如果已填充表,请确保删除与此约束冲突的所有条目。
答案 2 :(得分:1)
使用以下查询在表格上创建新的唯一索引
CREATE UNIQUE INDEX IDX_Composite_index ON BACAEN (CAET_KEY,BUUN_KEY);
即使填充了表,但上面的查询仍然有效但不应该重复。
答案 3 :(得分:0)
在桌面上创建唯一索引
CREATE UNIQUE INDEX indexname ON BACAEN (CAET_KEY,BUUN_KEY);