您的位置:首页 > 数据库

如何利用存储过程和触发器来管理数据库 (3)

2011-10-17 15:35 281 查看
如何利用存储过程和触发器来管理数据库 (3)

以下须是一个独立的查询模块,因为CREATE PROCDURE语句须是查询模块的首行。

  CREATE PROCDURE my_store_pro1   @my_paral char,   @my_para2 int   AS   SELECT*FROM my_table1   WHERE my_table1.no1=@my_para1   AND my_table.1no2<=@my_para2   GO   执行存储过my_store_pro1   EXEC my_store_pro1'12',23

触发器是一种特殊的存储过程,无论何时要对它所保护的表进行修改时它就自动执行。触发器由SQL Server自动执行,不能由应用程序调用,便于保护数据库的完整性和完全性。其语法结构为:



  CREATE TRIGGER [owner.]trigger_name   ON[owner.]table_name   FOR {INSERT,UPDATE,DELETE}   [WITH ENCR YPTION]   AS   IF UPDATE(column_name)   [{AND|OR}UPDATE(column_name)...]sql_statements   其中:   trigger_name〓〓指定触发器的名称   table_name〓〓指定触发器所在的表名   INSERT,UPDATE,DELETE〓〓指定触发条件



ENCRYPTION〓〓加密syscomments表的内容,syscomments表中包含CREATEPROCedure的文本,保证无论何时都不删除syscomments表,sql_statementw是在表的内容有修改(UPDATE)时引起的动作以下是一个修改触发器,如果my_tabel的nolmy_table1字段有修改,给出错误提示。

  CREATE TRIGGER test   ON my_tablel   FOR UPDATE   AS   IF UPDATE(nol)   BEGIN   PRINT(不能修改此列数据’)   END

  以下插入触发器在TITLE_L有数据增加时,给末对NO_LOCAL赋值的记录赋值,其值是现有记录中NO_LOCAL的最大值加1(NO_LOCAL为字符串类型)

  CREATE TRIGGER add_no   ON TITLE_L   FOR INSERT   AS   DECLARE @tmpl int   SELECT @tmpl=MAX(CONVERT(int,NO_LOCAL))FROM TITLB_L   SELECT @tmpl=@tmpl+1   DECLARE @tmpstr char(4)   SELECT @tmpstr=CONVERRT(varchar(4),@tmpl)   UPDATE TITLE_L   SET NO_LOCAL=@tmpstr WHERE NO_LOCAL=NULL

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: