关于view的触发器的例子.

原创 2004年08月14日 12:40:00

/*create table UserTable
(
    UserId       uniqueidentifier NOT NULL ROWGUIDCOL, -- 唯一标识
    Name          nvarchar(60)  NULL,  -- 名

   age     int NULL DEFAULT 0 check(age>20) ,-- 年龄
   
    address     nvarchar(25) NULL  --地址
)*/
go

create table LogTable1
(
name  nvarchar(60) null,
age int
)
go
create table LogTable2
(
name  nvarchar(60) null,
age int
)

go
insert LogTable1 values ( 't11',30)

insert LogTable1 values ( 't12',40)

insert LogTable1 values ( 't13',50)

insert LogTable2 values ( 't21',130)

insert LogTable2 values ( 't22',140)

insert LogTable2 values ( 't23',150)
insert LogTable2 values ( 't24',160)

select * into logAll from logtable1 union select * from logtable2


go
--create  view
Create view logView
as
select *  from logtable1 union select * from logtable2

--create trigger of delete in view
create trigger logView_delete on logView instead of delete
as
begin
delete logAll where name in (select name from deleted)
end
go

--create trigger of insert in view
create trigger logView_insert on logView instead of insert
as
begin
insert logAll select * from inserted
end
go


--create trigger of update in view
create trigger logView_update on logView instead of update
as
begin
 set nocount off
 if not exists(select * from inserted) return
 
 declare @name varchar(20)
        declare @oldname varchar(20)
 declare @age int

 select @name = name,@age=age from inserted
        select @oldname=name from deleted

         update logtable1 set name=@name,age=@age where name=@oldname
 update logtable2 set name=@name,age=@age where name=@oldname
 /*
 
 if @namer is null and @age is null
 begin
     raiserror ( 1074008065, 16, 127 ) with nowait, seterror
     return
 end

 if(UPDATE(name))-
 begin
      EXEC p_GetName
 end
 */


end


--test
delete logview where name='t11'

insert logview values('v1',100)


update logView set name='t1212',age=10000 where name='t12'

 

Oracle触发器简单实例

Oracle触发器的定义和使用
  • fullStackChenZF
  • fullStackChenZF
  • 2017年05月04日 08:06
  • 480

数据库(SQL)之trigger(触发器)的使用以及视图(view)的基本实现

对于触发器,首先需要明确的是一下几点: trigger_name 必须给触发器命令,最多64个字符,建议用表的名字_触发器类型的缩写方法命名。如ttlsa_posts_bi(表ttlsa_posts,...
  • u013816144
  • u013816144
  • 2015年12月05日 12:18
  • 1151

SqlServer触发器的一个例子

先抄一点关于触发器的文字介绍: 在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 常见的有三种:分别应用于Insert , ...
  • u013992365
  • u013992365
  • 2016年12月19日 15:39
  • 3760

MySQL 索引、试图、存过、函数、触发器

一、索引 1、 索引概述 MyISAM 和InnoDB 存储引擎的表默认创建的都是BTREE 索引。MySQL 目前还不支持函数索引,但是支持前缀索引,即对索引字段的前N 个字符创建索引。MySQ...
  • zq9017197
  • zq9017197
  • 2015年12月16日 19:53
  • 430

sql触发器实例使用

定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 常见的触发器有三种:分别应用于Insert ...
  • DevanChen
  • DevanChen
  • 2017年04月17日 17:00
  • 749

几个sql触发器样例

触发器虽然在sql标准中有支持,但是几个数据库仍然还是具有特殊的语法。笔者试着写了几个比较常用的触发器作为记录。DEMO使用一下两个表作为触发器的使用示例 test1(a, b, c, d) test...
  • will4906
  • will4906
  • 2017年07月22日 01:06
  • 286

【触发器】数据库_触发器实例

数据库触发器案例 一、课堂演示案例 例一:创建一个简单的insert触发器 先创建一个数据库备用 create database sampledb go   use sampledb ...
  • moshenglv
  • moshenglv
  • 2016年07月31日 15:31
  • 2233

在PowerDesigner中创建触发器(Trigger)的有关问题

在PowerDesigner中创建触发器(Trigger)的有关问题 signer中创建触发器(Trigger)的问题 我想在PowerDesigner9.5(下称PD)中创建...
  • xiaobing_122613
  • xiaobing_122613
  • 2017年01月23日 09:33
  • 1552

数据库触发器

触发器 Oracle触发器: 触发器是特定事件出现的时候,自动执行的代码块。类似于存储过程,但是用户不能直接调用他们。 功能: 1 、 允许 / 限制对表的修改 2 、 自动生成派生列,比如...
  • CNHK1225
  • CNHK1225
  • 2014年09月15日 21:57
  • 1553

创建INSERT、DELETE、UPDATE 触发器示例 .

触发器是基于一个表创建的,但是可以针对多个表进行操作。所以触发器可以用来对表实施复杂的完整性的约束,当触发器所保存的数据发生改变时,触发器所保存的数据发生改变时,触发器被自动激活,从而防止对数据的不正...
  • u010078133
  • u010078133
  • 2015年03月13日 11:10
  • 2011
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于view的触发器的例子.
举报原因:
原因补充:

(最多只允许输入30个字)