<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>FoxLing - 前端开发 &#187; SQL</title>
	<atom:link href="http://foxling.org/tag/sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://foxling.org</link>
	<description>不积跬步 无以至千里</description>
	<lastBuildDate>Mon, 05 Jul 2010 16:43:01 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>触发器设计技巧与实例</title>
		<link>http://foxling.org/develop/sql-trigger/</link>
		<comments>http://foxling.org/develop/sql-trigger/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 22:28:10 +0000</pubDate>
		<dc:creator>FoxLing</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[trigger]]></category>

		<guid isPermaLink="false">http://wp.foxling.cn/as-flex-air/3/</guid>
		<description><![CDATA[　　在数据库设计中，有两种方法可设定自动化的资料处理规则，一种是条件约束，一种是触发器,一般而言，条件约束比触发器较容易设定及维护，且执行效率较好，但条件约束只能对资料进行简单的栏位检核，当涉及到多表操作等复杂操作时，就要用到触发器了。
　　一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息，分别是：
    虚拟表Ins&#101;rted                    虚拟表Del&#101;ted
在表记录新增时   存放新增的记录                        不存储记录
    [...]]]></description>
			<content:encoded><![CDATA[<p>　　在数据库设计中，有两种方法可设定自动化的资料处理规则，一种是条件约束，一种是触发器,一般而言，条件约束比触发器较容易设定及维护，且执行效率较好，但条件约束只能对资料进行简单的栏位检核，当涉及到多表操作等复杂操作时，就要用到触发器了。<br />
　　一个数据库系统中有两个虚拟表用于存储在表中记录改动的信息，分别是：<br />
    虚拟表Ins&#101;rted                    虚拟表Del&#101;ted</p>
<p>在表记录新增时   存放新增的记录                        不存储记录<br />
        修改时   存放用来更新的新记录                  存放更新前的记录<br />
        删除时   不存储记录                            存放被删除的记录</p>
<p>触发器的种类及触发时机<br />
After触发器：触发时机在资料已变动完成后，它将对变动资料进行必要的善后与处理，若发现有错误，则用事务回滚（Rollback Transaction)将此次操作所更动的资料全部回复。<br />
Istead of 触发器：触发时机在资料变动前发生，且资料如何变动取决于触发器现在介绍一下创建触发器的编写格式：</p>
<p>After类型:<br />
Cr&#101;ate Trigger  触发器名称<br />
on 表名<br />
after 操作(ins&#101;rt,up&#100;ate)<br />
as<br />
    Sql语句</p>
<p>Instead类型<br />
Cr&#101;ate Trigger 触发器名称<br />
on 表名<br />
Instead of 操作(up&#100;ate,del&#101;te)<br />
as<br />
Sql语句</p>
<p>实例1:<br />
　　在订单(表orders)中的订购数量(列名为num)有变动时，触发器会先到客户(表Customer)中<br />
取得该用户的信用等级(列名为Level),然后再到信用额度(Creit)中取出该等级<br />
许可的订购数量上下限，最后比较订单中的订购数量是否符合限制。</p>
<p>代码：<br />
Cr&#101;ate  Trigger num_check<br />
on o&#114;ders<br />
after ins&#101;rt,up&#100;ate<br />
as<br />
if up&#100;ate(num)<br />
    begin<br />
    if exists(sel&#101;ct a.* from o&#114;ders a join customer b on a.customerid=b.customerid<br />
    join creit c on b.level=c.level<br />
    wh&#101;re a.num between c.up and c.down)<br />
        begin<br />
        rollback transaction<br />
        exec master..xp_sendmail &#39;administrator&#39;,&#39;客户的订购数量不符合限制&#39;<br />
        end<br />
    end</p>
<p>实例2:<br />
有工资管理系统中，当公司对某员工甲的月薪进行调整时，通常会先在表员工中修改薪资列,然后在表员工记录中修改薪资调整时间与薪资</p>
<p>Cr&#101;ate trigger compensation<br />
on 员工<br />
after up&#100;ate<br />
as<br />
    if @@rowcount=0 return<br />
    if up&#100;ate(薪资)<br />
    begin<br />
        ins&#101;rt 员工记录<br />
     sel&#101;ct 员工遍号,薪资,getdate()<br />
        from ins&#101;rted<br />
    end</p>
]]></content:encoded>
			<wfw:commentRss>http://foxling.org/develop/sql-trigger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL存储过程部分参数</title>
		<link>http://foxling.org/develop/2/</link>
		<comments>http://foxling.org/develop/2/#comments</comments>
		<pubDate>Wed, 02 Apr 2008 12:19:29 +0000</pubDate>
		<dc:creator>FoxLing</dc:creator>
				<category><![CDATA[开发]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[参数]]></category>
		<category><![CDATA[存储过程]]></category>

		<guid isPermaLink="false">http://wp.foxling.cn/as-flex-air/2/</guid>
		<description><![CDATA[参数值的类型的意义如下：


名称值
整数值
功能


addbtimestamp
135
日期时间数据类型


addecimal
14
十进制整数值


addouble
5
双精度小数值


aderror
10
系统错误信息


adguid
72
全域性唯一识别字(globallyuniqueidentifier)


addispath
9
com/ole自动对象(automationobject)


adinteger
3
4字节有符号整数


adiunknown
13
com/ole对象


adlongvarbinary
205
大型２字节值


adlongvarchar
201
大型字符串值


adlongvarwchar
203
大型未编码字符串


adnumeric
131
十进制整数值


adsingle
4
单精度浮点小数


adsmallint
2
2字节有符号整数


adtinyint
16
1字节有符号整数


adunsignedbigint
21
8字节无符号整数


adunsignedint
19
4字节无符号整数


adunsignedsmallint
18
2字节无符号整数


adunsignedtinyint
17
1字节无符号整数


aduserdefined
132
用户自定义数据类型


advariant
12
ole对象


advarbinary
204
双字节字符变量值


advarchar
200
字符变量值


advarchar
202
未编码字符串变量值


adwchar
130
未编码字符


　
方向值的意义如下：


名称值
整数值
功能


adparaminput
1
允许数据输入至该参数当中


adparamoutput
2
允许数据输出至该参数当中


adparaminputoutput
3
允许数据输入、输出至该参数当中


adparamreturnvalue
4
允许从一子程序中返回数据至该参数当中


]]></description>
			<content:encoded><![CDATA[<p>参数值的类型的意义如下：</p>
<table align="center">
<tr>
<th>名称值</th>
<th>整数值</th>
<th>功能</th>
</tr>
<tr>
<td>addbtimestamp</td>
<td>135</td>
<td>日期时间数据类型</td>
</tr>
<tr>
<td>addecimal</td>
<td>14</td>
<td>十进制整数值</td>
</tr>
<tr>
<td>addouble</td>
<td>5</td>
<td>双精度小数值</td>
</tr>
<tr>
<td>aderror</td>
<td>10</td>
<td>系统错误信息</td>
</tr>
<tr>
<td>adguid</td>
<td>72</td>
<td>全域性唯一识别字(globallyuniqueidentifier)</td>
</tr>
<tr>
<td>addispath</td>
<td>9</td>
<td>com/ole自动对象(automationobject)</td>
</tr>
<tr>
<td>adinteger</td>
<td>3</td>
<td>4字节有符号整数</td>
</tr>
<tr>
<td>adiunknown</td>
<td>13</td>
<td>com/ole对象</td>
</tr>
<tr>
<td>adlongvarbinary</td>
<td>205</td>
<td>大型２字节值</td>
</tr>
<tr>
<td>adlongvarchar</td>
<td>201</td>
<td>大型字符串值</td>
</tr>
<tr>
<td>adlongvarwchar</td>
<td>203</td>
<td>大型未编码字符串</td>
</tr>
<tr>
<td>adnumeric</td>
<td>131</td>
<td>十进制整数值</td>
</tr>
<tr>
<td>adsingle</td>
<td>4</td>
<td>单精度浮点小数</td>
</tr>
<tr>
<td>adsmallint</td>
<td>2</td>
<td>2字节有符号整数</td>
</tr>
<tr>
<td>adtinyint</td>
<td>16</td>
<td>1字节有符号整数</td>
</tr>
<tr>
<td>adunsignedbigint</td>
<td>21
<td>8字节无符号整数</td>
</tr>
<tr>
<td>adunsignedint</td>
<td>19</td>
<td>4字节无符号整数</td>
</tr>
<tr>
<td>adunsignedsmallint</td>
<td>18</td>
<td>2字节无符号整数</td>
</tr>
<tr>
<td>adunsignedtinyint</td>
<td>17
<td>1字节无符号整数</td>
</tr>
<tr>
<td>aduserdefined</td>
<td>132</td>
<td>用户自定义数据类型</td>
</tr>
<tr>
<td>advariant</td>
<td>12</td>
<td>ole对象</td>
</tr>
<tr>
<td>advarbinary</td>
<td>204</td>
<td>双字节字符变量值</td>
</tr>
<tr>
<td>advarchar</td>
<td>200</td>
<td>字符变量值</td>
</tr>
<tr>
<td>advarchar</td>
<td>202</td>
<td>未编码字符串变量值</td>
</tr>
<tr>
<td>adwchar</td>
<td>130</td>
<td>未编码字符</td>
</tr>
</table>
<p>　<br />
方向值的意义如下：</p>
<table align="center">
<tr>
<th>名称值</th>
<th>整数值</th>
<th>功能</th>
</tr>
<tr>
<td>adparaminput</td>
<td>1</td>
<td>允许数据输入至该参数当中</td>
</tr>
<tr>
<td>adparamoutput</td>
<td>2</td>
<td>允许数据输出至该参数当中</td>
</tr>
<tr>
<td>adparaminputoutput</td>
<td>3</td>
<td>允许数据输入、输出至该参数当中</td>
</tr>
<tr>
<td>adparamreturnvalue</td>
<td>4</td>
<td>允许从一子程序中返回数据至该参数当中</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://foxling.org/develop/2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
