我需要想出一个解决方法,来处理一个设计错误,但现在已经为时过晚。基本上我预计会有重复的数据进入到一个被特定结构避免这种情况的表中:
CREATE TABLE building (
building_id INT IDENTITY(1, 1) NOT NULL,
address_id INT NOT NULL,
company_id INT NOT NULL,
CONSTRAINT building_pk PRIMARY KEY (building_id),
CONSTRAINT building_fk1 FOREIGN KEY (address_id) REFERENCES address (address_id),
CONSTRAINT building_fk2 FOREIGN KEY (company_id) REFERENCES company (company_id)
);
CREATE INDEX building_idx1 ON building (address_id);
CREATE INDEX building_idx2 ON building (company_id);
/* Prevent dupes */
ALTER TABLE building ADD CONSTRAINT building_uk1 UNIQUE (address_id);
(为更清晰和相关于问题,原始本地化名称已更改。)
Acme公司的"导出建筑物"API将发送共享相同地址的不同建筑物。删除building_uk1
将破坏某些假定唯一性的功能,而我们在此阶段无法承担重大改写。
我想评估禁用building_uk1
对上述公司(company_id=314
)的影响,该公司可以不使用依赖于唯一性的功能。那么,放宽building_uk1
并仅在company_id
不是314时强制执行的选项是什么?