现在的位置: 首页 > 综合 > 正文

SQL存储过程、触发器

2013年05月12日 ⁄ 综合 ⁄ 共 1066字 ⁄ 字号 评论关闭
 

存储过程
由用户使用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
 
 
 
 
 
 
 
 
 

 

抱歉!评论已关闭.