`
fatedgar
  • 浏览: 135208 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

触发器-----------数据库(SQL)

阅读更多
格式:

create trigger tri_name
on table_name
[for (insert/update/delete)]
/[instead of (insert/update/delete)]
as
    statement


create trigger 名称
on 表名for (insert update delete 其中之一)
as
   语句


alter trigger tri_insert
on course for insert
as
declare @name nchar(5)
select @name=coursename from inserted
print '名称'+@name+'已被加入表!'
 
insert course
values ('007','计算机英语','004')



create trigger tri_delname
on course for delete
as
declare @name nchar(10)
select @name=coursename from deleted
print '名称'+@name+'已被删除出表!'
 
delete from course
where course_id='006'



create trigger tri_upname
on course for update
as
declare @oldname nchar(10)
declare @newname nchar(10)
select @oldname=coursename from deleted
select @newname=coursename from inserted
print '名称'+@oldname+'已被更新为'+@newname
 
update course
set coursename='计算机管理'
where course_id='007'
 


alter trigger tri_inname
on course instead of insert
as
print '名称'+@name+'未被加入表!'
 
insert into course
values('006','信息管理','002')



create trigger tri_upsc
on sc for update
 as
   declare @sid nchar(10)
   declare @cid nchar(10)
   declare @oldscore int
   declare @newscore int
   select @sid=student_id,@cid=course_id,@oldscore=score
   from deleted
   select @newscore=score from inserted
print '在'+convert(nvarchar(30),getdate())+
      @sid+'的'+@cid+'课程成绩由'+
       convert(nvarchar(3),@oldscore)+
      '改变为'+ convert(nvarchar(3),@newscore)
 
update sc
set score=60
where student_id='002' and course_id='003'



create trigger tri_insname
on teacher for insert
as
 declare @name nchar(10)
 select @name=tname from inserted
 print '教师'+@name+'插入到教师表中!'


create trigger tri_delname
on teacher for delete
as
   declare @name nchar(10)
 select @name=tname from deleted
 print '教师'+@name+'从教师表中删除了!'


create trigger tri_upname
on teacher for update
as
   declare @oldname nchar(10),@newname nchar(10)
 select @oldname=tname from deleted
 select @newname=tname from inserted
 print '教师'+@oldname+'改名为'+@newname



create trigger tri_upsc
on sc for update
 as
   declare @sid nchar(10)
   declare @cid nchar(10)
   declare @oldscore int
   declare @newscore int
   select @sid=sid,@cid=cid,@oldscore=score
   from deleted
   select @newscore=score from inserted
print '在'+convert(nvarchar(30),getdate())+
      @sid+'的'+@cid+'课程成绩由'+
       convert(nvarchar(3),@oldscore)+
      '改变为'+ convert(nvarchar(3),@newscore)


create trigger tri_inssc
on sc for insert
as
   declare @sid nchar(10)
   declare @cid nchar(10)
   declare @s int
   select @sid=sid,@cid=cid,@s=score
   from inserted
   print @sid+'的'+@cid+'课程成绩'+convert(nvarchar(3),@s)
          +'插入到成绩表中'
 
insert into sc
values ('004','004',100)
update sc
set score=60
where sid='002' and cid='003'
 
update teacher
set tname='叶问'
where tid='004'
 
insert into teacher
values ('005','李云松')


十一
create trigger tri_inscourse
on course for insert
as
 declare @name nchar(10)
 select @name=cname from inserted
 print '名称为:'+@name+'的课程插入到课程表中!'
 
insert into course
 values('006','数据库程序设计','001')

十二
create trigger tri_upcname
on course for update
as
   declare @oldname nchar(10)
   declare @newname nchar(10)
   select @oldname=cname from deleted
   select @newname=cname from inserted
   print '课程名:'+@oldname+'改名为'+@newname
 
update course
set cname='数据库管理'
where cid='006'

十三
create trigger tri_delname1
on course for delete
as
 declare @name nchar(10)
 select @name=cname from deleted
 print '课程'+@name+'删除了!'
 
delete from course
where cid='006'
 

十四
create trigger tri_insofname
on course instead of insert
 as
   print '当前用户无权插入数据!'
 
insert into course
values('006','数据库管理','001')

十五
create trigger tri_insofname1
on course instead of update
 as
   print '当前用户无权更新数据!'
 
update course
set cname='专业英语'
where cid='005'


create trigger tri_insertname
 on student for insert
 as
    declare @name nchar(10)
    select @name=sname from inserted
    print '学生:'+@name+'插入到学生表中!'
 
--执行
 insert into .....
 
 
create trigger tri_deletename
 on student for delete
 as
     declare @name nchar(10)
    select @name=sname from deleted
    print '学生:'+@name+'从学生表中删除了!'
 
--执行
    delete from student
    where ....
 
create trigger tri_updatename
on student for update
as
    declare @oldname nchar(10)
    declare @newname nchar(10)
    select @oldname=sname from deleted
    select @newname=sname from inserted
    print '学生:'+@oldname+ '更改为'+@newname
 
--执行
 update student
 set sname='' --新名
 where sname='' --旧名
 
create trigger insof_update
on student instead of update
as
   declare @sex nchar(10),@sid nchar(10)
   select @sex=ssex from inserted
   select @sid=sid from inserted
   if @sex not in ('男','女')
        print '插入值错误,请重做!'
      else
         update student
         set ssex='男'
         where sid=@sid
 
 
--执行
   update student
   set ssex='va'
   where sid=''
  
   update student
   set ssex='男'
   where sid=''



分享到:
评论
1 楼 7_iroy 2012-11-06  
竟然没人来评论??不错的学习源码啊,不过LZ没有给出表格,这有点可惜,得我自己来建。。。。。。。。。加油

相关推荐

    数据库触发器----VC

    数据库触发器是数据库管理系统中的一个重要组成部分,主要用于在特定的数据操作(如INSERT、UPDATE或DELETE)发生时自动执行一段预定义的SQL代码。在本压缩包中,"数据库触发器----VC"是一个示例,它展示了如何...

    数据库编程-存储过程-触发器-级联更新-SQL-server-游标、全网最全最详细编程实战

    - 触发器是数据库级别的事件响应机制,不会直接接收外部传递的参数。 - 触发器根据表数据的变化自动执行,无需用户显式调用。 #### 五、实验学时 - 实验总学时为6学时。 #### 六、实验重点及难点 1. **函数的使用...

    存储过程-触发器-ODBC数据库编程-实验报告.pdf

    根据提供的文件内容,以下是关于存储过程、触发器以及ODBC数据库编程的知识点整理。 知识点一:存储过程概述 存储过程是一组为了完成特定功能的SQL语句集,它在数据库中存储并且编译好,可以被多次调用执行。从文档...

    sql考试复习资料-索引--触发器-存储过程-详细查询语句

    在SQL的学习过程中,索引、触发器和存储过程是三个重要的概念,它们对于数据库的性能优化和业务逻辑处理起着至关重要的作用。本复习资料涵盖了这些主题,旨在帮助你全面理解和掌握SQL的基础到进阶知识。 首先,让...

    SQL数据库触发器练习题

    在SQL数据库中,触发器(Triggers)是一种存储过程,它们在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行。触发器是数据库系统中的重要组件,用于实现复杂的业务规则和数据完整性约束,当用户试图...

    存储过程_触发器-包-函数教程

    在数据库管理领域,存储过程、触发器和包是PL/SQL编程的重要组成部分,它们提供了高效、灵活的数据操作和业务逻辑实现。以下是对这些概念的详细解释: 1. **存储过程**: 存储过程是一种预编译的SQL语句集合,存储...

    SQL数据库 触发器课件

    【SQL数据库触发器详解】 SQL数据库中的触发器是一种特殊的存储过程,它的主要功能是在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行,以此来维护数据的完整性和一致性。触发器的设计旨在增强数据库...

    数据库实验6 触发器

    ### 数据库实验6:触发器 #### 一、实验背景及目标 本次实验的主要目的是让学生深入理解并掌握数据库触发器的使用方法。触发器是一种特殊类型的存储过程,它被自动执行,当特定事件(如数据的插入、更新或删除)...

    创建监控表的DML的触发器-0422

    此方案的核心在于利用Oracle数据库中的系统视图,如`v$session`、`v$sql`、`v$cursor`等来获取修改操作的相关信息。 #### 准备工作 首先,需要确保具有足够的权限来执行以下步骤。例如,可以使用SYSDBA权限连接...

    sql server 2012 T-SQl基础教程 源码和示例数据库

    7. **Chapter 10 - Programmable Objects**:在这一章,你将了解如何创建和管理存储过程、触发器等程序化对象,这在数据库逻辑业务处理中非常重要。 提供的源码文件,如TSQL2012.sql,可能是整个教程的示例数据库...

    SQL数据库----存储过程、触发器.ppt

    在SQL数据库中,存储过程和触发器是两个重要的高级特性,它们极大地增强了数据库管理的效率和灵活性。存储过程是一组预先编译好的SQL语句,它们可以被命名并存储在数据库中,以便后续调用执行。这使得重复的数据库...

    Transact-SQL数据库编程.ppt

    8.8 触发器,是一种特殊类型的存储过程,会在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行,用于实现业务规则和约束。 学习Transact-SQL对于任何想要在SQL Server环境中进行数据库开发或管理的人来...

    开源免费数据库同步工具SQL-DBDiff_V0.4

    SQL-DBDiff_V0.4是一款开源且免费的数据库同步工具,主要针对那些需要在不同数据库之间进行数据比对和迁移的用户。该工具具备全英文界面,虽然可能对中文用户造成一定的语言障碍,但其丰富的配置选项为熟悉英文的...

    数据库_SQL触发器实例讲解

    ### 数据库_SQL触发器实例讲解 #### 一、触发器概念与分类 触发器是数据库管理系统中的一个重要特性,它是一种特殊类型的存储过程,能够在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行。触发器的...

    sql server 2000中的用户数据库----pubs数据库

    Pubs数据库是一个典型的小型数据库,主要用于教学和学习SQL Server的基础操作,包括数据查询、表的创建、索引管理、视图、存储过程、触发器等。下面我们将深入探讨pubs数据库及其在SQL Server 2000中的应用。 1. **...

    learn-sql-the-hard-way-笨方法学sql

    2. **查询语句SELECT**(learn-sql-the-hard-waych9.html、learn-sql-the-hard-waych10.html、learn-sql-the-hard-waych11.html) - SELECT语句的基本语法 - 选择特定列 - 从多个表中联接数据 - WHERE子句用于...

    SQL语句解释大全-从数据库表中检索数据行和列

    SQL语句解释大全--从数据库表中检索数据行和列 INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 --数据定义 CREATE TABLE --创建一个数据库表 DROP TABLE --...

    标准SQL和transact-sql之比较学习

    在数据库对象管理上,T-SQL提供了对SQL Server特有的对象如触发器、用户自定义函数和类型的支持。例如,CREATE PROCEDURE语句在T-SQL中用于创建存储过程,而标准SQL虽然也有存储过程的概念,但具体语法可能会因...

    Transact-SQL语句总结大全

    DROP TRIGGER --从数据库中删除触发器 CREATE SCHEMA --向数据库添加一个新模式 DROP SCHEMA --从数据库中删除一个模式 CREATE DOMAIN --创建一个数据值域 ALTER DOMAIN --改变域定义 DROP DOMAIN ...

Global site tag (gtag.js) - Google Analytics