cs_GetUserIDByAppToken///cs_Group_CreateUpdateDelete

本文介绍了两个SQL存储过程:一个用于创建、更新和删除论坛组,另一个用于通过应用令牌获取用户ID。详细展示了如何通过存储过程实现数据操作,并强调了不同事务隔离级别的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ContractedBlock.gifExpandedBlockStart.gifcs_Group_CreateUpdateDelete
None.gifALTER        PROCEDURE [dbo].cs_Group_CreateUpdateDelete
None.gif(
None.gif    
@GroupID    int out,
None.gif    
@Name        nvarchar(256),
None.gif    
@Description    nvarchar(1000= '',
None.gif    
@ApplicationType smallint = 0,
None.gif    
@Action     int,
None.gif    
@SettingsID     int
None.gif)
None.gif
AS
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
-- CREATE
None.gif--
 创建
None.gif
IF @Action = 0
None.gif
BEGIN
None.gif    
DECLARE @SortOrder int
ExpandedBlockStart.gifContractedBlock.gif          
/**//*声明排序类型*/
None.gif
None.gif    
SELECT @SortOrder = coalesce(MAX(SortOrder) + 11FROM cs_Groups where SettingsID = @SettingsID
ExpandedBlockStart.gifContractedBlock.gif          
/**//*COALESCE 返回其参数中第一个非空表达式。*/
None.gif    
-- Create a new forum group
None.gif
        -- 创建一个 新的论坛的组,即区
None.gif
    INSERT INTO 
None.gif        cs_Groups 
None.gif        (
None.gif            Name,
None.gif            Description,
None.gif            SortOrder,
None.gif            ApplicationType,
None.gif            SettingsID
None.gif        )
None.gif    
VALUES 
None.gif        (
None.gif            
@Name,
None.gif            
@Description,
None.gif            
@SortOrder,
None.gif            
@ApplicationType,
None.gif            
@SettingsID
None.gif        )
None.gif    
None.gif    
SET @GroupID = @@IDENTITY
ExpandedBlockStart.gifContractedBlock.gif        
/**//*插入数据,主键自动增长*/
None.gif
END
None.gif
None.gif
None.gif
-- UPDATE
None.gif--
 更新
None.gif
ELSE IF @Action = 1 --如果是更新活动
None.gif
BEGIN
None.gif
None.gif    
IF EXISTS(SELECT GroupID FROM cs_Groups WHERE GroupID = @GroupID)
ExpandedBlockStart.gifContractedBlock.gif             
/**//*如果存在此大区,则更新此区数据 */
None.gif    
BEGIN
None.gif        
UPDATE
None.gif            cs_Groups
None.gif        
SET
None.gif            Name 
= @Name,
None.gif            Description 
= @Description
None.gif        
WHERE
None.gif            GroupID 
= @GroupID and SettingsID = @SettingsID
None.gif    
END
None.gif
None.gif
END
None.gif
None.gif
-- DELETE
None.gif--
 删除
None.gif
ELSE IF @Action = 2  -- 如果活动类型为2 ,则删除
None.gif
BEGIN
None.gif    
DELETE cs_Groups WHERE GroupID = @GroupID and SettingsID = @SettingsID
ExpandedBlockStart.gifContractedBlock.gif          
/**//*删除此组*/
None.gif
END
ExpandedBlockStart.gifContractedBlock.gif
/**//*这样的最清楚了,看输入的活动类型,如果是插入就先查找原来的排序类型,然后按序插入.
InBlock.gif如果是更新,则先判断是否存在,存在才能对其进行更新.然后是删除,直接删除就是.这时候来个
ExpandedBlockEnd.gif判断也不错.
*/

None.gif
ContractedBlock.gifExpandedBlockStart.gifcs_GetUserIDByAppToken
None.gifALTER          PROCEDURE [dbo].cs_GetUserIDByAppToken
None.gif(
None.gif    
@AppUserToken varchar(128),
None.gif    
@SettingsID int
None.gif)
None.gif
AS
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
SELECT
None.gif    U.cs_UserID
None.gif
FROM 
None.gif    cs_vw_Users_FullUser U (nolock)
None.gif
WHERE 
None.gif    U.cs_AppUserToken 
= @AppUserToken and SettingsID = @SettingsID
ExpandedBlockStart.gifContractedBlock.gif
/**//*从用户视图中查找用户ID,不知道cs_AppUserToken的意思*/
None.gif
None.gif
None.gif
None.gif
None.gif

转载于:https://www.cnblogs.com/ruanbl/archive/2006/09/20/509738.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值