视图、触发器

视图:  

SQL Server 构架

  使用SQL视图可以实现下列任一或所有功能:
  1,将用户限定在表中的特定行上。
  例如,只允许雇员看见工作跟踪表内记录其工作的行。
  2,将用户限定在特定列上。
  例如,对于那些不负责处理工资单的雇员,只允许他们看见雇员表中的姓名列、办公室列、工作电话列、邮件列和部门列,而不能看见任何包含工资信息或个人信息的列。
  3,将多个表中的列联接起来,使它们看起来象一个表。
  4,聚合信息而非提供详细信息。
  例如,显示一个列的和,或列的最大值和最小值。

   定义

  在下例中,pubs 数据库中的 titleview 是一个视图,该视图选择三个基表中的数据来显示包含常用数据的虚拟表:
  CREATE VIEW titleview
  AS
  SELECT title, au_ord, au_lname, price, ytd_sales, pub_id
  FROM authors AS a
  JOIN titleauthor AS ta ON
  JOIN titles AS t ON (t.title_id = ta.title_id)
  之后,可以用引用表时所使用的方法在语句中引用 titleview。
  SELECT *

  FROM titleview

 

 

 

    触发器

 

      触发器可以查询其他表,而且可以包含复杂的 SQL语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。

  触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。

DML触发器

  当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果我们对该表写了对应的DML触发器,那么该触发器自动执行。DML触发器的主要作用在于强制执行业 务规则,以及扩展Sql Server约束,默认值等。因为我们知道约束只能约束同一个表中的数据,而触发器中则可以执行任意Sql命令。

DDL触发器

  它是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改表,修改列,新增表,新增列等。它在数据库结构发生变化时执行,我们主要用它来记录数据库的修改过程,以及限制程序员对数据库的修改,比如不允许删除某些指定表等。

创建SQL语法

  DELIMITER |

  CREATE TRIGGER `<databaseName>`.`<triggerName>`

  < [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] >

  ON <tableName>

  FOR EACH ROW

  BEGIN

  --do something

  END |

 

insert 触发器示例

  create trigger tri_insert

  on student

  for insert

  as

  declare @student_id char(10)

  select @student_id=s.student_id from

  student s inner join inserted i

  on s.student_id=i.student_id

  if @student_id='0000000001'

  begin

  raiserror('不能插入1的学号!',16,8)

  rollback tran

  end

  go

update触发器示例

  create trigger tri_update

  on student

  for update

  as

  if update(student_id)

  begin

  raiserror('学号不能修改!',16,8)

  rollback tran

  end

  go

delete触发器示例

  create trigger tri_delete

  on student

  for delete

  as

  declare @student_id varchar(10)

  select @student_id=student_id from deleted

  if @student_id='admin'

  begin

  raiserror('错误',16,8)

  rollback tran

  end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值