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;"
'conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=NtopSamp"
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;"
'conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=NtopSamp"
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;"
'conn1.Open "driver={SQL Server};server=(Local);uid=sa;pwd=;database=NtopSamp"
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。