关于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'

 

sqlserver 触发器 insert阿

  • 2010年08月09日 12:15
  • 647B
  • 下载

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

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

触发器简单实例讲解

触发器简单实例讲解触发器(trigger):监视某种情况,并触发某种操作。触发器创建语法四要素: 监视地点(table) 监视事件(insert/update/delete) 触发时间(after...
  • kkagr
  • kkagr
  • 2017-06-28 14:22:51
  • 186

存储过程函数,触发器

  • 2010年07月11日 23:13
  • 8KB
  • 下载

一个简单的触发器示例

-- 创建备份表 create table emp_his as (select * from emp where 1=2); 创建触发器内容 -- 创建触发器 create...
  • magi1201
  • magi1201
  • 2016-04-09 20:06:04
  • 2168

Oracle触发器简单实例

Oracle触发器的定义和使用
  • fullStackChenZF
  • fullStackChenZF
  • 2017-05-04 08:06:06
  • 622

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

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

oracle 触发器简单实例

语法格式: create or replace trigger 触发器名字 before(/after) insert(delete ,update)---这个不能写select o...
  • y112102
  • y112102
  • 2011-12-12 13:57:19
  • 1869

MySql触发器实例

触发器能进行一些约束. 这是个小例子,当Student表的StudentID列被发生更改时,BorrowStudent表的StudentID列也跟着更改.如果Student表删除某记录,Borrow...
  • Delete_V
  • Delete_V
  • 2013-11-13 22:05:18
  • 2244

几个sql触发器样例

触发器虽然在sql标准中有支持,但是几个数据库仍然还是具有特殊的语法。笔者试着写了几个比较常用的触发器作为记录。DEMO使用一下两个表作为触发器的使用示例 test1(a, b, c, d) test...
  • will4906
  • will4906
  • 2017-07-22 01:06:05
  • 488
收藏助手
不良信息举报
您举报文章:关于view的触发器的例子.
举报原因:
原因补充:

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