以下的文章主要向大家讲述的是图形化操作SQL Server触发器的实际应用,假如你在图形化操作SQL Server触发器的实际应用中存在不解之处时,你不妨浏览下面的文章,希望你能从中获得自己想要的东西。
查看触发器情况
图形化操作结合T-SQL命令
(1)sp_helptrigger 触发器名
查看触发器的名称,拥有者和五个布尔值
supdate,isdelete,isinsert,isafter,isinsteadof
(2)sp_helptext 触发器名
查看文本信息
(3)设置某一SQL Server触发器的无效和重新有效
无效: use northwind alter table 表名 disable trigger 触发器名 重新有效: use northwind alter table 表名 enable trigger 触发器名
(4)删除触发器
use northwind drop trigger 触发器名,触发器名
作业3:
在order_test表上建立一个插入SQL Server触发器,在添加一个订单时,减少cust_test表的相应货物的记录的库存量。
作业4:
在order_test表上建立一个插入触发器,规定订单日期(Odate)不能手工修改。
作业5:
要求订购的物品一定要在仓库中有的,并且数量足够。
例6:
在order_test表上建立一个插入触发器,同时插入多行数据时,要求订购的物品一定要在仓库中有的。
答案3:
use northwind go create trigger cust_orders_ins3 on order_test after insert as update cust_test set cstorage=cstorage-inserted.orders from cust_test,inserted where cust_test.customerid=inserted.customerid
答案4:
use northwind go create trigger orderdateupdate on order_test after update as if update (odate) begin rAIserror('Error',10,1) rollback transaction end
答案5:
use northwind go create trigger order_insert5 on order_test after insert as begin if(select count(*) from cust_test,inserted where cust_test.customerid=inserted.customerid)=0 begin print 'No entry in goods for your order' rollback transaction end if(select cust_test.cstorage from cust_test,inserted where cust_test.customerid=inserted.customerid)< (select inserted.orders from cust_test,inserted where cust_test.customerid=inserted.customerid) begin print 'No enough entry in goods for your order' rollback transaction end end
答案6:
use northwind go create trigger order_insert6 on order_test after insert as if (select count(*) from cust_test,inserted where cust_test.customerid=inserted.customerid)<>@@rowcount --可以在触发器逻辑中使用 @@ROWCOUNT 函数以区分单行插入和多行插入。 begin delete order_test from order_test,inserted where order_test.orderid=inserted.orderid and inserted.customerid not in (select customerid from cust_test) end print @@rowcount
Transact-SQL 参考
SET ROWCOUNT
使 microsoft SQL Server 在返回指定的行数之后停止处理查询。
语法
SET ROWCOUNT { number | @number_var }
参数
number | @number_var
是在停止给定查询之前要处理的行数(整数)。
注释
建议将当前使用 SET ROWCOUNT 的 DELETE、INSERT 和 UPDATE 语句重新编写为使用 TOP 语法。有关更多信息,请参见 DELETE、INSERT 或 UPDATE。
对于在远程表和本地及远程分区视图上执行的 INSERT、UPDATE 和 DELETE 语句,忽略 SET ROWCOUNT 选项设置。
若要关闭该选项(以便返回所有的行),请将 SET ROWCOUNT 指定为 0。
说明 设置 SET ROWCOUNT 选项将使大多数 Transact-SQL 语句在已受指定数目的行影响后停止处理。这包括触发器和 INSERT、UPDATE 及 DELETE 等数据修改语句。ROWCOUNT 选项对动态游标无效,但限制键集的行集和不感知游标。使用该选项时应谨慎,它主要与 SELECT 语句一起使用。
假如行数的值较小,则 SET ROWCOUNT 替代 SELECT 语句 TOP 关键字。
SET ROWCOUNT 的设置是在执行或运行时设置,而不是在分析时设置。
权限
SET ROWCOUNT 权限默认授予所有用户。
示例
SET ROWCOUNT 在指定的行数后停止处理。在下例中,注意有 x 行满足预付款少于或等于 $5,000 的条件;但是,从更新所返回的行数中可以看出并非所有的行都得到处理。ROWCOUNT 影响所有的 Transact-SQL 语句。
USE pubs GO SELECT count(*) AS Cnt FROM titles WHERE advance >= 5000 GO
下面是结果集:
Cnt ----------- 11 (1 row(s) affected) 现在,将 ROWCOUNT 设置为 4,并更新预付款等于或大于 $5,000 的所有行。
SET ROWCOUNT to 4. SET ROWCOUNT 4 GO UPDATE titles SET advance = 5000 WHERE advance >= 5000 GO
以上的相关内容就是对图形化操作SQL Server触发器的介绍,望你能有所收获。
扫描二维码推送至手机访问。
版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。
正在启动windows时间长怎么办 小编带来了Windows 7/8.1正在启动windows时间长解决方法,假如有朋友在安装完Windows系统之后一直停留在“正在启动windows”的话,不妨试一试下文的方法哦~ 原因:Windows 7/8.1不完全支持UEFI,需要CSM(Comp...
在某些电脑中,机器内部蜂鸣器与系统的声音输出方案是相关联的,这样一来会导致当系统输出声音时,即使电脑没有连接外部音响或耳机,也会通过内置蜂鸣器发出“嘟嘟哔哔”的声音。这个问题主要出现在Windows 7电脑中,假如你的电脑恰好遇到了这样的问题,可参考下面的方法来解决: 1、在桌面“计算机”图标上右...
有些使用本本的朋友可能会发现,右下角通知栏区域会无法显示电源按钮,导致在插上电源或者是使用电池的时候都无法进行区分。造成这种情况大部分都是因为使用了第三方修改过的系统版本或者对于系统优化过度,所以今天就来解决这个问题。 第一步:在开始菜单的搜索窗口输入“gpedit.msc”,进入组策略编辑器,依...
北京时间1月13日消息,根据计划,微软将于2015年1月13日正式结束对Windows 7SP1的“主流支持”,而这也标志着“扩展支持”阶段的开始,这个阶段将于2020年1月14日结束。 2013年10月份,微软终止销售独立的Windows 7系统安装包,并要求制造商于2014年10月份停止生...
重装系统是我们面对许多电脑问题时的终极方法,不过重装系统也不意味着就能将全部的问题都修复。一些用户在重装系统后开机时,电脑卡在“正在启动Windows”开机界面上了,这要怎么解决呢? Windows 7系统重装后卡在开机界面的解决方法: 一、首先可以看看该故障出现的原因是否是因为启动了acp...
一、打开控制面板,选择“网络和共享中心”; 二、在网络和共享中心中选择“设置新的连接或网络”; 三、选择连接到Internet; 四、选择“仍要设置新的连接”; 五、选择“宽带PPPoE ”; 六、输入对应的宽带帐号及密码,点击连接即可;...