<?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>Sat, 19 Nov 2011 16:29:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<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 在表记录新增时 存放新增的记录 不存储记录 修改时 存放用来更新的新记录 存放更新前的记录 删除时 不存储记录 存放被删除的记录 触发器的种类及触发时机 After触发器：触发时机在资料已变动完成后，它将对变动资料进行必要的善后与处理，若发现有错误，则用事务回滚（Rollback Transaction)将此次操作所更动的资料全部回复。 Istead of 触发器：触发时机在资料变动前发生，且资料如何变动取决于触发器现在介绍一下创建触发器的编写格式： After类型: Cr&#101;ate Trigger 触发器名称 on 表名 after 操作(ins&#101;rt,up&#100;ate) as Sql语句 Instead类型 Cr&#101;ate Trigger 触发器名称 on 表名 Instead of 操作(up&#100;ate,del&#101;te) as Sql语句 实例1: 　　在订单(表orders)中的订购数量(列名为num)有变动时，触发器会先到客户(表Customer)中 取得该用户的信用等级(列名为Level),然后再到信用额度(Creit)中取出该等级 许可的订购数量上下限，最后比较订单中的订购数量是否符合限制。 代码： Cr&#101;ate Trigger num_check on o&#114;ders after ins&#101;rt,up&#100;ate as if up&#100;ate(num) [...]]]></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字节无符号整数 [...]]]></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>

