所有字段都是可选字段时更新查询

Ran*_*hey 5 sql coldfusion

我有一个表,我需要更新所有列可选地传递给方法.

然后我使用ColdFusion检查是否已传递每个列并将其添加到更新查询中.

做这个的最好方式是什么?我不能总是更新user_id字段,因为它是一个标识字段.是否有类似于设置1 = 1的东西,就像我在下面那样可以工作?问题只是逗号导致语法错误.

谢谢你的帮助.

update users
set 1 = 1
    <cfif len(arguments.userType)>,user_type = #arguments.userType#</cfif>
    <cfif len(arguments.primaryGroupId)>,primary_group_id = #arguments.primaryGroupId#</cfif>
    <cfif len(arguments.email)>,email = '#arguments.email#'</cfif>
    <cfif len(arguments.password)>,password = '#arguments.password#'</cfif>
    <cfif len(arguments.firstName)>,first_name = '#arguments.firstName#'</cfif>
    <cfif len(arguments.lastName)>,last_name = '#arguments.lastName#'</cfif>
    <cfif len(arguments.status)>,status = '#arguments.status#'</cfif>
    <cfif len(arguments.languageId)>,language_id = #arguments.languageId#</cfif>
    <cfif len(arguments.gmtOffset)>,gmt_offset = '#arguments.gmtOffset#'</cfif>
where user_id = #arguments.userId#
Run Code Online (Sandbox Code Playgroud)

Jas*_*n M 4

如果您正在更新,并且参数未传递,则只需将其设置为当前值即可。

update users
set
    user_type = <cfif len(arguments.user_type)>#arguments.userType#<cfelse>user_type</cfif>
    ,primary_group_id = <cfif len(arguments.primaryGroupId)>#arguments.primaryGroupId#<cfelse>primary_group_id</cfif>
    ,email = <cfif len(arguments.email)>'#arguments.email#'<cfelse>email</cfif>
where user_id = #arguments.userId#
Run Code Online (Sandbox Code Playgroud)