[摘要]Update Update表达式,用来更新表中字段的资料值,可以使用WHERE设定特定的条件运算式,符合条件运算式的记录才会被更新。 语法如下: UPDATE 表 SET 字段新值 WHERE 条件运算式 当您要同时更新多个记录,或者在多个表中更新记录时,就需要用到UPDATE表达式。 您可以同时...
Update
Update表达式,用来更新表中字段的资料值,可以使用WHERE设定特定的条件运算式,符合条件运算式的记录才会被更新。
语法如下:
UPDATE 表
SET 字段新值
WHERE 条件运算式
当您要同时更新多个记录,或者在多个表中更新记录时,就需要用到UPDATE表达式。
您可以同时更新多个字段的资料值,譬如,下例将产品表中的所有记录,价格打九折,运费打七折:
UPDATE 产品
SET 价格 = 价格 * 0.9, 运费 = 运费 * 0.7
UPDATE表达式并不会产生Recordset。当您使用UPDATE表达式更新记录之后,无法复原原始值。因此,如果您想知道哪些记录将被更新,建议您先使用SELECT和相同的WHERE条件运算式来查询结果,确定是您想更新的记录后,然后再执行UPDATE表达式更新记录。
当然您可以随时将的资料作备份复制,万一您使用UPDATE表达式更新了错误的记录,您仍然可以从您的备份中救回这些记录。
让我们看一个於ASP程式码当中使用这个SQL指令的例子。
譬如ASP程式码rs5.asp如下,[Update 产品 Set 数量 = 数量 + 10] 使用Update将产品表中的所有记录的数量字段资料加10:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
sql = "Update 产品 Set 数量 = 数量 + 10"
Set a = conn1.Execute(sql)
Set rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Select * from 产品 order by 代号"
rs3.Open sql,conn1,1,1,1
%>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">代号</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名称</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">价格</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">数量</FONT></TD>
</TR>
<% Do while not rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("代号")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("名称")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("价格")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("数量")%></TD>
</TR>
<%
rs3.MoveNext
Loop
rs3.Close
conn1.Close
%>
</TABLE>
以上的 ASP程式码rs5asp,在用户端使用浏览器,浏览执行数量字段资料加10的结果,每执行一次就将产品表中的数量加10。
Update...Where
UPDATE表达式,可以使用WHERE设定特定的更新条件,符合更新条件的记录才做更新。
譬如ASP程式码rs6.asp如下,[Update 产品 Set 数量 = 数量 + 10 where 种类 = '电脑'] 设定特定的更新条件,[种类] 字段为 [电脑] 的记录才将数量加10:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
sql = "Update 产品 Set 数量 = 数量 + 10 where 种类 = '电脑'"
Set a = conn1.Execute(sql)
Set rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Select * from 产品 order by 种类 DESC"
rs3.Open sql,conn1,1,1,1
%>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">代号</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名称</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">数量</FONT></TD>
</TR>
<% Do while not rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("代号")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("名称")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("数量")%></TD>
</TR>
<%
rs3.MoveNext
Loop
rs3.Close
conn1.Close
%>
</TABLE>
以上的 ASP程式码rs6.asp,在用户端使用浏览器,浏览执行的结果,显示数量加10的记录。
Update...Where...In
可以利用Update...Where...In找出重复的记录,譬如ASP程式码rs6.asp如下,[Update 产品 Set 价格 = 价格 - 100 where 种类 = '电脑' and 价格 in (Select 价格 from 产品 where 价格 > 30000)] 表示价格 > 30000而 [种类] 字段为 [电脑] 的记录才降价100:
<%
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="& Server.MapPath("ntopsamp.mdb") &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"
sql = "Update 产品 Set 价格 = 价格 - 100 where 种类 = '电脑' and 价格 in (Select 价格 from 产品 where 价格 > 30000)"
Set a = conn1.Execute(sql)
Set rs3 = Server.CreateObject("ADODB.Recordset")
sql = "Select * from 产品 order by 种类 DESC"
rs3.Open sql,conn1,1,1,1
%>
<TABLE COLSPAN=8 CELLPADDING=5 BORDER=0>
<TR>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">代号</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">名称</FONT></TD>
<TD ALIGN=CENTER BGCOLOR="#800000"><FONT COLOR="#FFFFFF">价格</FONT></TD>
</TR>
<% Do while not rs3.EOF %>
<TR>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("代号")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("名称")%></TD>
<TD BGCOLOR="f7efde" ALIGN=CENTER><%= rs3("价格")%></TD>
</TR>
<%
rs3.MoveNext
Loop
rs3.Close
conn1.Close
%>
</TABLE>
以上的 ASP程式码rs6.asp,在用户端使用浏览器,浏览执行的结果,显示价格 > 30000的电脑才降价100。
(出处:热点网络)
……