使用coldfusion将数据附加到数据库列

时间:2015-03-02 10:09:37

标签: sql-server coldfusion sql-update

由于某种原因,以下UPDATE不会将我的笔记添加到Admin_Notes字段。该字段为空,但一旦有数据,我想添加到当前数据而不是替换它。

<cfargument name="adminNotes" required="yes">
<cfargument name="form_ID" required="yes">
<cfargument name="quoteNumber" required="yes">

<cfquery name="completeRFQ" datasource="RC">
    UPDATE RFQ_Forms
    SET Status = 'Complete',
        Completion_Date = CURRENT_TIMESTAMP,
        Admin_Notes = Admin_Notes + <cfqueryparam value="#ARGUMENTS.adminNotes#">,
        Quote_Num = <cfqueryparam value="#ARGUMENTS.quoteNumber#">
  WHERE ID = <cfqueryparam value="#ARGUMENTS.form_ID#">
</cfquery>

此列设置为nvarchar(MAX)

我的查询的其余部分正确完成,我确认传递的变量中包含一个字符串。

我将查询包装在一个cftry中,但我没有收到任何回复。

测试后我对我的问题进行了更新

该列实际上是空的,因为这是我第一次运行它。当我手动向列添加文本然后运行查询时,文本的第二部分将添加到列中。

如果列中的数据是空的,并且已经有文本,那么如何将数据添加到列中?

2 个答案:

答案 0 :(得分:1)

您应该能够在列周围包装一个isNull()检查。这样,如果Admin_Notes为null,它会将其转换为空字符串并附加数据

<cfquery name="completeRFQ" datasource="RC">
UPDATE RFQ_Forms
SET Status = 'Complete',
    Completion_Date = CURRENT_TIMESTAMP,
    Admin_Notes = isNull(Admin_Notes,'') + <cfqueryparam value="#ARGUMENTS.adminNotes#">,
    Quote_Num = <cfqueryparam value="#ARGUMENTS.quoteNumber#">
WHERE ID = <cfqueryparam value="#ARGUMENTS.form_ID#">
</cfquery>

答案 1 :(得分:0)

  

该列实际上是空的,因为这是我第一次运行它。当我手动向列添加文本然后运行查询时,文本的第二部分将添加到列中。

它失败的原因是你试图将某些内容变为null。要解决此问题,请更新表并将所有空值设置为空字符串。然后更改列以​​使其不为空,并使用默认值为空字符串。

与您的问题无关,您应该为cfargument和cfqueryparam标记指定数据类型。