私はこのSQL Serverコードを持っています。それ以外のすべては、同じRightsId
とUserId
の行を複製します。 where not exists
句が機能しません。 何か助けていただければ幸いです。内部結合から選択して挿入します。存在しない場合は
INSERT INTO dbo.UserAccessRights (Id, UserId, RightType, RightsId, CreatedOn, CreatedBy)
SELECT DISTINCT
NEWID(),
@changedUserId,
N'Process ' + @rightsTypeSuffix,
ptm.ProcessInstance_id,
getdate(),
@loggedInUserId
FROM
dbo.ProcessTeamMembers ptm WITH (NOLOCK)
INNER JOIN
dbo.Users u WITH (NOLOCK) ON ptm.TeamMemberProfile_id = u.ProfileID
AND u.Id = @changedUserId
AND ptm.TenantId = @tenantId
INNER JOIN
dbo.ProcessInstances p_i WITH (NOLOCK) ON p_i.Id = ptm.ProcessInstance_id
AND p_i.DeletedOn IS NULL
WHERE
NOT EXISTS (SELECT *
FROM UserAccessRights uar WITH (NOLOCK)
WHERE uar.UserId = @changedUserId
AND uar.RightsId = ptm.ProcessInstance_id)
[NOLOCKをどこにでも置くための嫌な習慣](http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/) - これはどこにでも使用することをお勧めしません。反対! –
(NOLOCK)は重複の問題ですか? –