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。
转载http://asp123.on.net.cn
