我有一个像这样的触发器的一部分 -
DECLARE @isInsert TINYINT
SET @isInsert = (CASE @actionType WHEN 'I' THEN 1 ELSE 0 END)
SELECT
(CASE @isInsert WHEN 1 THEN i.groupId ELSE d.groupId END) AS groupId
INTO #tmpRecordPermissionsToCheck
FROM inserted i
FULL JOIN deleted d
ON i.userId = d.userId
AND
i.groupId = d.groupId
-- Stop everything if the user is attempting to edit something they're not entitled to...
-- special case(s): refer above for additional tblServer-specific checks required here
DECLARE @errMsg VARCHAR(255)
SELECT @errMsg = 'You do not have permission to edit permissions for group ' + IsNULL(ug.shortName, '')
FROM #tmpRecordPermissionsToCheck tmp
LEFT JOIN tblUserGroups ug
ON ug.groupId = tmp.groupId
WHERE dbo.hasAdministrativePermissionsForGroup(tmp.groupId, dbo.getCurrentUser()) = 0
IF (@errMsg IS NOT NULL)
BEGIN
RAISERROR ( @errMsg, 16, 1 )
ROLLBACK TRANSACTION
RETURN
END
我正在调用一个返回0或1 bit
值的单独函数。
如果我select dbo.isGlobalAdministrator(dbo.getCurrentUser())
我得到1。
如何构建上述代码,以便IF (@errMsg IS NOT NULL)
可以覆盖dbo.isGlobalAdministrator(dbo.getCurrentUser()) = 1
?
答案 0 :(得分:1)
如果dbo.isGlobalAdministrator(dbo.getCurrentUser())= 1,我如何构造上面的代码以便覆盖IF(@errMsg IS NOT NULL)?
当你说被覆盖时,我认为你想绕过errormessage
所以只需添加以上错误消息
if ( dbo.isGlobalAdministrator(dbo.getCurrentUser()) = 1)
return