CREATE PROCEDURE [dbo].[Cipher_UpdateWithSubvaults] @Id UNIQUEIDENTIFIER, @UserId UNIQUEIDENTIFIER, @OrganizationId UNIQUEIDENTIFIER, @Type TINYINT, @Data NVARCHAR(MAX), @CreationDate DATETIME2(7), @RevisionDate DATETIME2(7), @SubvaultIds AS [dbo].[GuidIdArray] READONLY AS BEGIN SET NOCOUNT ON UPDATE [dbo].[Cipher] SET [UserId] = @UserId, [OrganizationId] = @OrganizationId, [Type] = @Type, [Data] = @Data, [CreationDate] = @CreationDate, [RevisionDate] = @RevisionDate WHERE [Id] = @Id MERGE [dbo].[SubvaultCipher] AS [Target] USING @SubvaultIds AS [Source] ON [Target].[SubvaultId] = [Source].[Id] AND [Target].[CipherId] = @Id WHEN NOT MATCHED BY TARGET THEN INSERT VALUES ( [Source].[Id], @Id ) WHEN NOT MATCHED BY SOURCE AND [Target].[CipherId] = @Id THEN DELETE ; END