硬编码ID与查询



我有一个名为"status"的表,它只包含ID(PK(和名称(字符串,唯一(。此外,其他表格也引用了该状态(例如status_id(

比方说,有两种状态:

1 - status1
2 - status2

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

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

如果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,这将更好地为将来维护。

Name不是检查id的最佳选择,相反,因为名称在大多数情况下(可以是相同的一般情况(都会导致重复,导致行冗余,同时添加新列也会使情况变得最糟。与往常一样,更好的选择是表或唯一列的主键。您可以在列上设置一个唯一约束来处理重复项,以防您希望将其用作搜索id

硬编码从来都不是一个好主意,而是取决于代码生命周期中值更改的频率。。。使用查询是更好的

sql

最新更新