硬编码 ID 与查询
hardcoded ID vs query
有一种情况,我将 table 命名为 "status",其中仅包含 ID (PK) 和名称(字符串,唯一)。此外,其他 table 引用了此状态(例如 status_id)
比方说,有两种状态:
1 - status1
2 - status2
现在,我想 insert/update 在 table2 中记录(它引用了状态 table)。最好的方法是什么,我应该硬编码我想设置的状态 ID 还是应该按名称查询,然后获取 ID 并在之后分配它?
注意:这也是一般的编程问题(没有直接的 SQL 查询)。我找不到它的标签。
如果name
是包含唯一值的列,您可以使用name
字段获取ID
,然后使用ID
。但是,通常 name
列不包含唯一值,因此需要使用其他列只接收 1 个 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 是什么的最佳选择,因为 name 在大多数情况下(可以是相同的一般情况)会导致重复,导致行冗余,同时您继续添加新列使情况变得更糟。一如既往,更好的选择是 table 或唯一列的主键 您可以在列上设置唯一约束来处理重复项,以防您希望将其用于搜索 id
硬编码从来都不是一个好主意,而是取决于代码在整个生命周期中值更改的频率...使用查询更好
sql
有一种情况,我将 table 命名为 "status",其中仅包含 ID (PK) 和名称(字符串,唯一)。此外,其他 table 引用了此状态(例如 status_id)
比方说,有两种状态:
1 - status1
2 - status2
现在,我想 insert/update 在 table2 中记录(它引用了状态 table)。最好的方法是什么,我应该硬编码我想设置的状态 ID 还是应该按名称查询,然后获取 ID 并在之后分配它?
注意:这也是一般的编程问题(没有直接的 SQL 查询)。我找不到它的标签。
如果name
是包含唯一值的列,您可以使用name
字段获取ID
,然后使用ID
。但是,通常 name
列不包含唯一值,因此需要使用其他列只接收 1 个 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 是什么的最佳选择,因为 name 在大多数情况下(可以是相同的一般情况)会导致重复,导致行冗余,同时您继续添加新列使情况变得更糟。一如既往,更好的选择是 table 或唯一列的主键 您可以在列上设置唯一约束来处理重复项,以防您希望将其用于搜索 id
硬编码从来都不是一个好主意,而是取决于代码在整个生命周期中值更改的频率...使用查询更好