Skip to content

Instantly share code, notes, and snippets.

@darylteo
Created April 16, 2015 03:39
Show Gist options
  • Select an option

  • Save darylteo/a193e0333cb2ee32453f to your computer and use it in GitHub Desktop.

Select an option

Save darylteo/a193e0333cb2ee32453f to your computer and use it in GitHub Desktop.
Stored Procedure T-SQL - Move Document Types in Umbraco 6.2.5
CREATE PROCEDURE SetParentContentType
@childAlias as varchar(MAX),
@parentAlias as varchar(MAX)
AS
BEGIN TRANSACTION;
declare @childId as int;
declare @parentId as int;
SET @childId = (SELECT nodeId FROM cmsContentType WHERE alias = @childAlias);
SET @parentId = (SELECT nodeId FROM cmsContentType WHERE alias = @parentAlias);
IF @childId IS NULL
BEGIN
PRINT 'Child Not Found'
END
ELSE IF @parentId IS NULL
-- Putting at Root
BEGIN
IF @parentAlias IS NULL
BEGIN
-- Update cmsContentType2ContentType
DELETE FROM cmsContentType2ContentType
WHERE childContentTypeId = @childId;
-- Update umbracoNode
UPDATE umbracoNode
SET
[level] = 1,
parentID = -1,
[path] = '-1,' + CAST(@childId AS varchar)
WHERE id = @childId;
END
ELSE
PRINT 'Parent Not Found'
END
ELSE
BEGIN
-- Update cmsContentType2ContentType
IF EXISTS (SELECT * FROM cmsContentType2ContentType WHERE childContentTypeId = @childId)
BEGIN
UPDATE cmsContentType2ContentType
SET parentContentTypeId = @parentId
WHERE childContentTypeId = @childId;
END
ELSE
BEGIN
INSERT INTO cmsContentType2ContentType (parentContentTypeId, childContentTypeId)
VALUES (@parentId, @childId);
END
-- Update umbracoNode
UPDATE umbracoNode
SET
[level] = (SELECT [level] FROM umbracoNode WHERE id = @parentId) + 1,
parentID = @parentId,
[path] = (SELECT [path] FROM umbracoNode WHERE id = @parentId) + ',' + CAST(@childId AS varchar)
WHERE id = @childId;
END
COMMIT TRANSACTION;
GO
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment