cs_Favorite_Delete///cs_Favorite_Get

本文介绍了一个SQL存储过程的设计方案,用于实现不同类型的关注功能,包括获取关注详情及删除关注记录。通过判断关注类型来选择不同的表进行操作,确保了数据的准确性和一致性。
ContractedBlock.gifExpandedBlockStart.gifcs_Favorite_Get
None.gifALTER    procedure dbo.cs_Favorite_Get
None.gif(
None.gif    
@FavoriteType    int,
None.gif    
@FavoriteID        int
None.gif)
None.gif
AS
None.gif    
SET NOCOUNT ON
None.gif
ExpandedBlockStart.gifContractedBlock.gif
/**//*当 SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。
InBlock.gif当 SET NOCOUNT 为 OFF 时,返回计数。即使当 SET NOCOUNT 为 ON 时,
ExpandedBlockEnd.gif也更新 @@ROWCOUNT 函数。
*/

None.gif
None.gif    
SET Transaction Isolation Level Read UNCOMMITTED
ExpandedBlockStart.gifContractedBlock.gif  
/**//*设置事务隔离级别,Read UNCOMMITTED  执行脏读或 0 级隔离锁定,这表示不发出共享锁,
InBlock.gif  也不接受排它锁。当设置该选项时,可以对数据执行未提交读或脏读;在事务结束前可以更
InBlock.gif  改数据内的数值,行也可以出现在数据集中或从数据集消失。该选项的作用与在事务内所有
ExpandedBlockEnd.gif  语句中的所有表上设置 NOLOCK 相同。这是四个隔离级别中限制最小的级别。
*/

None.gif
None.gif
-----------------------------------------------------------------------
ExpandedBlockStart.gifContractedBlock.gif
/**//*删除关注的记录,同样还是先判断关注的类型.如果再在不同的表中删除响应的记录
InBlock.gif  要说明的是这边获取的记录并不仅属于一个人,而其他有点类似的存储过程之所以和这不一
InBlock.gif样是 因为他们有的是获取某用户的一条记录等,所以这里 可关注的就是细节了,语法都没什么变.
ExpandedBlockEnd.gif  下面类似,就在这里说下,其他段不说了.
*/

None.gif
------------------------------------------------------------------------
None.gif
    IF @FavoriteType = 1        -- Section
None.gif

None.gif        
SELECT
None.gif            F.FavoriteID,
None.gif            F.OwnerID 
AS UserID,
None.gif            F.SettingsID,
None.gif            F.SectionID 
AS ItemID,
None.gif            
@FavoriteType AS FavoriteType,
None.gif            F.ApplicationType
None.gif        
FROM
None.gif            cs_FavoriteSections F
None.gif        
WHERE
None.gif            F.FavoriteID 
= @FavoriteID
None.gif
None.gif    
ELSE IF @FavoriteType = 2    -- User
None.gif

None.gif        
SELECT
None.gif            F.FavoriteID,
None.gif            F.OwnerID 
AS UserID,
None.gif            F.SettingsID,
None.gif            F.UserID 
AS ItemID,
None.gif            
@FavoriteType AS FavoriteType,
None.gif            F.ApplicationType
None.gif        
FROM
None.gif            cs_FavoriteUsers F
None.gif        
WHERE
None.gif            F.FavoriteID 
= @FavoriteID
None.gif
None.gif    
ELSE IF @FavoriteType = 4    -- Post
None.gif

None.gif        
SELECT
None.gif            F.FavoriteID,
None.gif            F.OwnerID 
AS UserID,
None.gif            F.SettingsID,
None.gif            F.PostID 
AS ItemID,
None.gif            
@FavoriteType AS FavoriteType,
None.gif            F.ApplicationType
None.gif        
FROM
None.gif            cs_FavoritePosts F
None.gif        
WHERE
None.gif            F.FavoriteID 
= @FavoriteID
ExpandedBlockStart.gifContractedBlock.gif
/**//*因为判断后面的语句都挺是照着走的,所以没多注释.*/
None.gif
None.gif
None.gif
None.gif
GO
ContractedBlock.gifExpandedBlockStart.gifcs_Favorite_Delete
None.gifALTER  PROCEDURE dbo.cs_Favorite_Delete
None.gif(
None.gif    
@FavoriteType    int,
None.gif    
@FavoriteID        int
None.gif)
None.gif
AS
ExpandedBlockStart.gifContractedBlock.gif        
/**//*判断关注类型,然后再在各表中删除.因为不同的关注是保存在不同的表中的,所以才判断.*/
None.gif    
IF @FavoriteType = 1        -- Section
None.gif

None.gif        
DELETE
None.gif        
FROM    cs_FavoriteSections
None.gif        
WHERE    FavoriteID = @FavoriteID
None.gif
None.gif    
ELSE IF @FavoriteType = 2    -- User
None.gif

None.gif        
DELETE
None.gif        
FROM    cs_FavoriteUsers
None.gif        
WHERE    FavoriteID = @FavoriteID
None.gif
None.gif    
ELSE IF @FavoriteType = 4    -- Post
None.gif

None.gif        
DELETE
None.gif        
FROM    cs_FavoritePosts
None.gif        
WHERE    FavoriteID = @FavoriteID
None.gif
None.gif
None.gif
GO

转载于:https://www.cnblogs.com/ruanbl/archive/2006/09/06/495986.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值