视图:
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