1.触发器
Table : UserInfo
字段: UserId UnitID
Table : Publish
字段: PublishID UnitID
Table : Subscribe
字段: PublishID UnitID UserId
当User插入一条数据时根据插入数据的UnitID
去Publish 表进行查询得到PublishID,结果有多条
然后把结果循环插入Subscribe
触发器应该怎么写?
CREATE TRIGGER [Userinfo_Insert_Subscribe] ON [dbo].[UserInfo]
FOR INSERT
AS
insert into dbo.Subscribe(UnitUserID,UserID,Type,DataID,CreateDate)
select i.UnitUserID,i.UserID,1,p.id,getdate() from dbo.PublishType p
,Inserted i
where p.UnitUserID =i.UnitUserID and p.IsDefaultSubscribe ='Y'
注: 之前一直卡在使用循环插入上,实际只需一条sql
二.视图
create view allMessage2 as
select MessageLog.id,MessageLog.UserID,MessageLog.UnitUserID,convert(varchar(50),MessageLog.CreateDate,21) as CreateDate ,
SendDate,MessageContent ,MessageType,SendMode,
MessageLog.UserMobile,UserInfo.UserName as UserName,cast('m'+cast(MessageLog.id as varchar(10)) as varchar(15)) as tid
from dbo.MessageLog
left join dbo.UserInfo on MessageLog.UserID = dbo.UserInfo.UserID
union all
select LogID as id,NoteLog.UserID,NoteLog.UnitUserID, convert(varchar(50),NoteLog.CreateDate,21) as CreateDate ,
convert(varchar(50),NoteLog.SendDate,21) as SendDate ,Note.Content as messageContent,6 as MessageType,
2 as SendMode,UserInfo.MobileNO as UserMobile,UserInfo.UserName as UserName,cast('n'+cast(LogID as varchar(10)) as varchar(15)) as tid
from dbo.NoteLog
left join dbo.Note on Note.NoteID = NoteLog.NoteID
left join dbo.UserInfo on NoteLog.UserID = dbo.UserInfo.UserID
where NoteLog.NoteType =1
三.存储过程
写道
CREATE PROCEDURE unitStatisticByDate2
@unitUserID int,
@startDate varchar(10),
@endDate varchar(10)
AS
BEGIN
if EXISTS (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#ut') and type='U')
drop table #ut;
create table #ut(unitUserID int)
insert into #ut(unitUserID) values(@unitUserID)
if ltrim(rtrim(@startDate))!= '' and ltrim(rtrim(@endDate))!= ''
BEGIN
select a.unitUserID ,
(select count(1) as count from dbo.VisitPageLog where unitUserID=a.unitUserID
and UserIP <> '219.232.238.17'
and VisitTime >= @startDate and VisitTime <= @endDate
) as allVisitCount ,
(select count(1) as count from dbo.SearchLog where unitUserID=a.unitUserID
and CreateDate >= @startDate and CreateDate <= @endDate
) as allUserSearchCount,
(select count(1) as count from dbo.BrowseInfo where unitUserID=a.unitUserID
and CreateDate >= @startDate and CreateDate <= @endDate
) as browseInfoCount,
(select count(1) as count from uoml where unitUserID=a.unitUserID
and CreateDate >= @startDate and CreateDate <= @endDate
) as uomlCount,
(select count(1) as count from dbo.delivery where unitUserID=a.unitUserID
and CreateDate >= @startDate and CreateDate <= @endDate
) as deliveryCount,
(select count(1) as count from dbo.Favorites where unitUserID=a.unitUserID
and CreateDate >= @startDate and CreateDate <= @endDate
) as favoritesCount,
(select count(1) as count from dbo.Subscribe where unitUserID=a.unitUserID
and CreateDate >= @startDate and CreateDate <= @endDate
) as subscribeCount,
(select count(1) as count from allMessage where unitUserID=a.unitUserID
and CreateDate >= @startDate and CreateDate <= @endDate
) as allMessageCount,
(select count(1) as count from dbo.NoteLog where NoteType =2 and unitUserID=a.unitUserID
and CreateDate >= @startDate and CreateDate <= @endDate
) as allMmsMessageCount
from #ut a
END
else
BEGIN
select a.unitUserID ,
(select count(1) as count from dbo.VisitPageLog where unitUserID=a.unitUserID
and UserIP <> '219.232.238.17'
) as allVisitCount ,
(select count(1) as count from dbo.SearchLog where unitUserID=a.unitUserID
) as allUserSearchCount,
(select count(1) as count from dbo.BrowseInfo where unitUserID=a.unitUserID
) as browseInfoCount,
(select count(1) as count from uoml where unitUserID=a.unitUserID
) as uomlCount,
(select count(1) as count from dbo.delivery where unitUserID=a.unitUserID
) as deliveryCount,
(select count(1) as count from dbo.Favorites where unitUserID=a.unitUserID
) as favoritesCount,
(select count(1) as count from dbo.Subscribe where unitUserID=a.unitUserID
) as subscribeCount,
(select count(1) as count from allMessage where unitUserID=a.unitUserID
) as allMessageCount,
(select count(1) as count from dbo.NoteLog where NoteType =2 and unitUserID=a.unitUserID
) as allMmsMessageCount
from #ut a
END
END
GO
四.定时作业
分享到:
相关推荐
SQL的存储过程、触发器等建立视图存储过程触发器函数(自定义函数)索引 视图 视图是从一个或几个基本表(或视图)导出的表。不同的是,它是一虚表,数据库中只存放视图的定义,而不存放视图对应的数据,这些数据...
SqlServer数据库字典--表.视图.函数.存储过程.触发器.主键.外键.约束.规则
根据提供的文件信息,本文将详细探讨SQL Server 2008中的存储过程与触发器的知识点。 首先,SQL Server是微软公司开发的一款关系数据库管理系统(RDBMS)。SQL Server 2008是该系列中的一个版本,它提供了存储过程...
在SQL Server中,触发器是一种特殊的存储过程,它在数据更改操作(如INSERT、UPDATE或DELETE)发生时自动执行。本示例展示了如何利用触发器来实现对多表视图的更新,具体涉及了以下几个关键知识点: 1. **触发器的...
在SQL Server数据库管理系统中,存储过程和触发器是两种非常重要的数据库编程元素,它们极大地提升了数据库的灵活性和安全性。本文将深入讲解SQL Server中的存储过程和触发器,并结合实际应用场景来帮助初学者理解和...
存储过程解密的原理是基于 SQL Server 的系统视图 sys.sysobjvalues,该视图存储了存储过程、函数、触发器和视图等对象的元数据信息。其中,imageval 列存储了对象的加密信息。通过查询 sys.sysobjvalues 视图,我们...
SQL Server 数据库基础.pdf,SQL Server 数据管理(常用函数).pdf,SQL Server 数据查询(表的关联).pdf,SQL Server 事务索引视图.pdf,SQL Server 存储过程及触发器.pdf,SQL Server 编程及高级查询.pdf,让你从入门...
在SQL Server 2005中,触发器、事务、存储过程和视图是数据库管理中的核心概念,它们对于数据库的高效运作和数据完整性至关重要。这些T-SQL语句是数据库开发人员和管理员日常工作中不可或缺的工具。 首先,让我们...
在SQL Server中,存储过程是一种预编译的SQL语句集合,它允许开发人员封装一组复杂的操作,并在需要时重复调用。存储过程对于数据库管理、数据处理和性能优化具有重要意义。本文主要介绍如何在SQL Server中导出和...
在SQL Server中,触发器是一种特殊的存储过程,它在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时自动执行,以实现复杂的数据完整性规则或业务逻辑。本篇将深入探讨触发器的基本概念、类型、分类及如何实现...
需要指定触发器的名称、触发时机(AFTER或INSTEAD OF)、触发的表或视图以及触发器执行的SQL语句。 3. **触发器结构**: 触发器由两部分组成:`INSERTED`和`DELETED`虚拟表。`INSERTED`表包含了新插入或更新后的行...
在SQL Server 2000中,数据库对象如存储过程、函数、视图和触发器等,有时会被加密以保护其源代码不被查看或修改。这种加密是通过使用SQL Server的内置加密机制来实现的,它使得普通用户无法直接读取到这些对象的...
在SQL Server 2005中,触发器是一种特殊的存储过程,它在特定的数据操作语言(DML)事件,如INSERT、UPDATE或DELETE发生时自动执行。触发器可以帮助实现复杂的业务规则和数据完整性,通过扩展SQL语句的功能,提供了...
在SQL Server中,存储过程、函数、视图和触发器是重要的数据库对象,它们对于数据处理和业务逻辑的实现起着至关重要的作用。然而,为了保护敏感数据和代码,有时我们会对这些对象进行加密,这就是"WITH ENCRYPTION...
触发器是SQL Server中一种特殊的存储过程,其特点在于不能被显式地调用,而是当对特定表进行数据操作(如插入、更新或删除)时自动激活。通过这种方式,触发器能够帮助实现复杂的业务逻辑和数据完整性约束。 #### ...
在SQL Server 2005中,索引、视图、存储过程和触发器是数据库管理系统中的关键元素,它们在数据库设计和优化中扮演着重要角色。以下是对这些概念的详细解释: **索引**: 索引是数据库系统中为了加快数据检索速度而...
视图,触发器,存储过程,ER图.sqlserver数据库实训,广告公司管理系统,sqlsever数据库大作业,包括增删改查。。视图,触发器,存储过程,ER图.sqlserver数据库实训,广告公司管理系统,sqlsever数据库大作业,包括...
打破了Microsoft发布SQLServer时声称的SQLServer存储过程,触发器,视图加密时采用的是不可逆算法,经加密后无法解密的神话。用SQLDecrypt将解密经过加密的任何长度的SQLServer存储过程,触发器,视图,不管其长度多...
在SQL Server中,管理和维护存储过程和触发器同样重要,包括查看它们的定义、修改它们的代码以及在不再需要时删除它们。掌握这些技能对于数据库管理员和开发人员来说至关重要,因为它们是构建高效、安全和可维护的...
本示例提供了一个名为`sp_decrypt`的存储过程,用于解密SQL Server 2000中的存储过程、函数、视图或触发器。该存储过程通过从系统表`syscomments`和`sysobjects`中检索相关信息,进而还原出原始的非加密版本。 ####...