SQL存储过程、触发器

 
存储过程
由用户使用 CREATE PROCEDURE 语句在当前数据库中创建
数据库所有者拥有使用 CREATE PROCEDURE 语句的默认权限
语法
                CREATE PROC[EDURE] procedure_name  
创建存储过程 示例
无参数
CREATE PROCEDURE Titles_1389 AS
PRINT ' 此代码显示出版商 1389 出版的标题 '
SELECT * FROM titles WHERE pub_id = ' 1389 '
有参数
CREATE PROCEDURE Titles_Pub
       @v_pubid char(4) 
       AS  
 SELECT * FROM titles WHERE pub_id = @v_pubid
 
EXECUTE 语句用来运行用户定义的存储过程。
语法
            EXEC[UTE] procedure_name  
示例
有参数
EXECUTE Titles_Pub ' 0877 '
 
创建触发器
触发器可以通过企业管理器或者查询分析器来创建。
语法:
CREATE TRIGGER Trigger_name
ON table
[WITH ENCRYPTION]
FOR [DELETE, INSERT, UPDATE]
AS Sql_statements
 
 
INSERT 触发器示例
alter trigger checkroyalty
on roysched
for insert,update as
if (select max(royalty) from inserted) > 30
begin
 print 'royaltytrigger :版权费不能超过 30'
 print ' 请将版权费修改为小于 30 的值 '
 rollback transaction
end
列级 UPDATE 触发器示例
 
 
 
create trigger noupdatepayterms
on sales
for update as
if update (payterms)
begin
 print ' 不能修改订单的付费条款 '
 rollback transaction
end
触发器定义中的 IF UPDATE ( 列名 ) 子句可用来确定 INSERT UPDATE 语句是否影响到表中的一个特定列。无论何时 当列被赋值时 该子句即为 TRUE
DELETE 触发器示例
create trigger nodelete9901
on pub_info
for delete as
if (select pub_id from deleted) = 9901
begin
 print ' 不能删除出版商 9901 的详细信息 '
 rollback transaction
end
 
 
 
 
 
 
 
 
 
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值