与前一位程序员--他的代码--一起工作是一件很费劲的事.现在,显然,也是他的数据库。
问题描述
因此,这里我们有一个表来存储用户的可用性,通常您会为每一行数据分配一个唯一的id。除了..。他没有,他让user_id成为第一个主键(可能是一个复合键)。因此,用户更改了每个工作日(星期一至星期五)和该周的每个时隙的可用性。这将被分成一行:
user_id,day,hour_nr,hour_type,location_id但你可能会看到这一次,我不能手动插入假数据用于开发目的。我试图添加一个期间和大学年(这是为一个教育机构),这是很好的,但由于旧的数据不需要这一点,所以所有的设置为0。
新一行将包括:
user_id,day,hour_nr,hour_type,location_id,period_id,collegeyear_id我尝试将数据上传到包含期间和大学年信息的表中,但是我立即收到一个错误,告诉我有一个重复的条目。这是正确的,但已经有重复的。
问题
所以问题是:我如何在不改变表键的情况下强制这样做?我不太想改变复合主键的索引属性。
最后,我知道这是错误的,我知道应该采取不同的做法。再说一次,这不是我的工作或设计,我没有任何时间来修复或改变它在这个项目。
编辑
根据请求,在此给出包含数据的表的快照和应如何使用的快照。
快照显示的标题与前面提到的不同,但在荷兰语中是相同的。
当前数据快照 (我忘了将最后2列放在快照上,但它们只包含0)。
我确实需要一个INSERT,数据必须被添加,而不是改变。当然也不能解决这个问题,但是必须添加数据。
修复
因此,在隧道视觉的一个完美例子中,我修正了,因此回答了我自己的问题。
我不应该盲目地考虑插入数据,而应该更多地关注复合关键部分。我在键中增加了两个新列,现在一切都很好。
我说我不想弄乱这些键,但那是指向已经存在的键,而不是添加到复合键中。
我仍然不喜欢这样一个事实,即没有一个唯一的id,但它是可行的。
发布于 2017-08-17 15:28:25
因此,在隧道视觉的一个完美例子中,我修正了,因此回答了我自己的问题。
我不应该盲目地考虑插入数据,而应该更多地关注复合关键部分。我在键中增加了两个新列,现在一切都很好。
我说我不想弄乱这些键,但那是指向已经存在的键,而不是添加到复合键中。
我仍然不喜欢这样一个事实,即没有一个唯一的id,但它是可行的。
发布于 2017-08-17 15:21:25
所以问题是:我如何在不改变表键的情况下强制这样做?我不太想改变复合主键的索引属性。
答:您不能强迫主键具有相同ID的多个值。最好的做法是在软件中添加一个带有新ID和引用的额外列。
主键是指定用于唯一标识所有表记录的特殊关系数据库表列(或列的组合)。
主键的主要特点是:
它必须包含每一行数据的唯一值。它不能包含空值。主键要么是现有的表列,要么是由数据库根据定义的序列具体生成的列。
资源:- 技术漏斗
https://stackoverflow.com/questions/45738211
复制相似问题