我在SQL方面的经验非常有限,因此我一直在努力提出正确的问题。
想象我有一个5列的表格
Simulation_ID Param_1 Param_2 Param_3 Param_4 Param_5 Output_folder 下表总结了使用某些参数运行的仿真以及结果的输出文件夹。
我想防止在此表中插入重复项。就我而言,模拟必须具有一组唯一的参数。因此,任何模拟都不应具有相同的参数组合。我很想将主键定义为(ID, Param_1, Param_2, Param_3, Param_4, Param_5),但是我读到,由于性能不佳,不建议使用复合键。当前,Simulation_ID是表的主键。
想象一下,如果有人想添加一个具有唯一ID但与另一个现有记录所使用的参数相同的模拟集。
例:
表中的当前数据:
1 0.5 0.4 0.3 0.2 0.1 folder1 2 10 0.4 0.3 0.2 0.1 folder2 新记录是:
3 0.5 0.4 0.3 0.2 0.1 folder3 从技术上讲,尽管该记录具有不同的ID和output_folder,但其值(Param_1to Param_5)与记录#1 完全相同。我想进行检查,如果发生这种情况,将引发错误并且未插入记录。
那可能吗?实际上,我的表有20多个列,而20列中的17列是我想用来标记和防止重复的内容。
您需要唯一约束或(等效)唯一索引。您可以将其添加为:
alter table t add constraint unq_t_params
unique (param_1, param_2, param_3, param_4, param_5);
如果您尝试添加表中已经存在的一组参数,这将返回错误,从而防止插入
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。