Files
ZelWiki/ZelWiki.Repository/Scripts/TruncateAllPageRevisions.sql
2025-02-23 18:47:21 +08:00

66 lines
1.9 KiB
SQL

DELETE FROM PageRevision
WHERE EXISTS (
SELECT 1
FROM (
SELECT PageId, MAX(Revision) AS MaxRevision
FROM PageRevision
GROUP BY PageId
) AS MostRecent
WHERE PageRevision.PageId = MostRecent.PageId
AND PageRevision.Revision < MostRecent.MaxRevision
);
DELETE FROM PageRevisionAttachment
WHERE EXISTS (
SELECT 1
FROM (
SELECT PageFileId, PageId, MAX(FileRevision) AS MaxFileRevision
FROM PageRevisionAttachment
GROUP BY PageId, PageFileId
) AS MostRecent
WHERE PageRevisionAttachment.PageFileId = MostRecent.PageFileId
AND PageRevisionAttachment.PageId = MostRecent.PageId
AND PageRevisionAttachment.FileRevision < MostRecent.MaxFileRevision
);
DELETE FROM PageRevisionAttachment
WHERE EXISTS (
SELECT 1
FROM (
SELECT PageFileId, PageId, MAX(PageRevision) AS MaxPageRevision
FROM PageRevisionAttachment
GROUP BY PageId, PageFileId
) AS MostRecent
WHERE PageRevisionAttachment.PageFileId = MostRecent.PageFileId
AND PageRevisionAttachment.PageId = MostRecent.PageId
AND PageRevisionAttachment.PageRevision < MostRecent.MaxPageRevision
);
DELETE FROM PageFileRevision
WHERE EXISTS (
SELECT 1
FROM (
SELECT PageFileId, MAX(Revision) AS MaxPageRevision
FROM PageFileRevision
GROUP BY PageFileId
) AS MostRecent
WHERE PageFileRevision.PageFileId = MostRecent.PageFileId
AND PageFileRevision.Revision < MostRecent.MaxPageRevision
);
DELETE FROM PageFileRevision
WHERE PageFileId NOT IN (
SELECT PageFileId FROM PageRevisionAttachment
);
DELETE FROM PageFile
WHERE Id NOT IN (
SELECT PageFileId FROM PageRevisionAttachment
);
UPDATE [Page] SET Revision = 1;
UPDATE PageRevision SET Revision = 1;
UPDATE PageRevisionAttachment SET PageRevision = 1, FileRevision = 1;
UPDATE PageFileRevision SET Revision = 1;
UPDATE PageFile SET Revision = 1;