硬编码ID与查询

时间:2018-11-15 20:03:59

标签: sql lookup-tables hard-coding

有一种情况,当我有一个名为“状态”的表时,该表仅包含ID(PK)和名称(字符串,唯一)。另外,其他表格也引用了此状态(例如status_id)

比方说,有两种状态:

Activity

现在,我想在table2(具有对状态表的引用)中插入/更新记录。最好的方法是什么,我应该对要设置的状态ID进行硬编码还是应该按名称查询,然后获取ID并在之后分配它?

注意:这也是一般的编程问题(无直接SQL查询)。我找不到它的标签。

3 个答案:

答案 0 :(得分:0)

如果name是包含唯一值的列,则可以使用name字段来获取ID,然后使用ID。但是,通常name列不包含唯一值,因此要求使用其他列仅接收1个ID而不是多个ID。

查看情况:

ID name
1  John White
2  John White

在这里,如果您使用name字段,则会返回2个不同的IDs,这将导致错误。这就是为什么您需要另一种方法,例如:

..
where name = @name and dateOfBirth = @dob and MothersName=@mothersname

确保返回一个唯一的ID。

总而言之,如果您确定name字段包含唯一值,请使用该字段获取ID,而不要使用经过硬编码的ID值。否则,您可以尝试在配置文件中创建一个密钥,例如“ lookupid”,并使用其值而不是使用仍采用硬编码的ID,这样将来会更好。

答案 1 :(得分:0)

名称不是检查id的相反的最佳选择,因为名称在大多数情况下(可能与一般情况相同)会导致重复,从而导致行的冗余,同时您还要添加新列最糟糕的与往常一样,更好的选择是表或唯一列的主键,如果希望将其用作搜索ID

,则可以对列进行唯一约束以处理重复项

答案 2 :(得分:0)

硬编码从来都不是一个好主意,而是取决于在整个代码生命周期中值多久更改一次……使用查询更好

sql