Only in 213: drop-triggers.sql diff -u 213/phase2-schema.sql 213patched/phase2-schema.sql --- 213/phase2-schema.sql 2008-05-22 15:36:51.000000000 +0300 +++ 213patched/phase2-schema.sql 2008-05-22 16:48:28.000000000 +0300 @@ -1,4 +1,4 @@ - + /* ---------------------------------------------------------------------- */ /* FOLDER */ /* ---------------------------------------------------------------------- */ @@ -1562,22 +1562,78 @@ +/* ---------------------------------------------------------------------- */ +/* DROP TRIGGERS */ +/* ---------------------------------------------------------------------- */ + +IF EXISTS (SELECT 1 FROM sysobjects WHERE type ='TR' AND name='trig_FOLDER') + DROP TRIGGER trig_FOLDER; + +IF EXISTS (SELECT 1 FROM sysobjects WHERE type ='TR' AND name='trig_PAGE') + DROP TRIGGER trig_PAGE; + +IF EXISTS (SELECT 1 FROM sysobjects WHERE type ='TR' AND name='trig_FRAGMENT') + DROP TRIGGER trig_FRAGMENT; + +IF EXISTS (SELECT 1 FROM sysobjects WHERE type ='TR' AND name='trig_FOLDER_MENU') + DROP TRIGGER trig_FOLDER_MENU; + +IF EXISTS (SELECT 1 FROM sysobjects WHERE type ='TR' AND name='trig_PAGE_MENU') + DROP TRIGGER trig_PAGE_MENU; + /* ---------------------------------------------------------------------- */ /* CLUBS */ -/* ---------------------------------------------------------------------- +/* ---------------------------------------------------------------------- */ - - + + BEGIN ALTER TABLE FOLDER ADD CONSTRAINT FK_FOLDER_1 FOREIGN KEY (PARENT_ID) REFERENCES FOLDER (FOLDER_ID) ON DELETE NO ACTION ON UPDATE NO ACTION END -; - +; + +GO + +CREATE TRIGGER [dbo].[trig_FOLDER] + ON FOLDER + INSTEAD OF DELETE + AS + + SET NOCOUNT ON; + + WITH cte AS + ( SELECT FOLDER_ID, PARENT_ID + FROM DELETED + UNION ALL + SELECT c.FOLDER_ID, c.PARENT_ID + FROM FOLDER AS c + INNER JOIN cte AS p + ON c.PARENT_ID = p.FOLDER_ID + ) + SELECT * + into #tmp + FROM cte + OPTION (MAXRECURSION 32767) + + DELETE FROM PAGE + WHERE PARENT_ID IN (SELECT FOLDER_ID FROM #tmp); + + DELETE FROM FOLDER_MENU + WHERE FOLDER_ID IN (SELECT FOLDER_ID FROM #tmp); + + DELETE FROM FOLDER + where FOLDER_ID IN ( + SELECT FOLDER_ID FROM #TMP) + + + drop table #tmp + +GO @@ -1644,7 +1700,7 @@ /* ---------------------------------------------------------------------- */ /* FOLDER_ORDER */ /* ---------------------------------------------------------------------- */ - + BEGIN ALTER TABLE FOLDER_MENU @@ -1652,13 +1708,44 @@ REFERENCES FOLDER_MENU (MENU_ID) ON DELETE NO ACTION ON UPDATE NO ACTION END -; +; + +GO + +CREATE TRIGGER [dbo].[trig_FOLDER_MENU] + ON [dbo].[FOLDER_MENU] + INSTEAD OF DELETE + AS + + SET NOCOUNT ON; + + WITH cte AS + ( SELECT MENU_ID, PARENT_ID + FROM DELETED + UNION ALL + SELECT c.MENU_ID, c.PARENT_ID + FROM FOLDER_MENU AS c + INNER JOIN cte AS p + ON c.PARENT_ID = p.MENU_ID + ) + SELECT * + into #tmp + FROM cte + OPTION (MAXRECURSION 32767) + + DELETE FROM FOLDER_MENU + WHERE MENU_ID IN( + SELECT MENU_ID FROM #tmp) + + drop table #tmp + +GO BEGIN ALTER TABLE FOLDER_MENU ADD CONSTRAINT FK_FOLDER_MENU_2 FOREIGN KEY (FOLDER_ID) REFERENCES FOLDER (FOLDER_ID) - ON DELETE CASCADE + ON DELETE NO ACTION END ; @@ -1688,10 +1775,29 @@ ALTER TABLE PAGE ADD CONSTRAINT FK_PAGE_1 FOREIGN KEY (PARENT_ID) REFERENCES FOLDER (FOLDER_ID) - ON DELETE CASCADE + ON DELETE NO ACTION END ; +GO + +CREATE TRIGGER [trig_PAGE] + ON PAGE + INSTEAD OF DELETE + AS + + SET NOCOUNT ON; + + DELETE FROM PAGE_MENU + WHERE PAGE_ID IN (SELECT PAGE_ID FROM DELETED); + + DELETE FROM FRAGMENT + WHERE PAGE_ID IN (SELECT PAGE_ID FROM DELETED); + + DELETE FROM PAGE + WHERE PAGE_ID IN (SELECT PAGE_ID FROM DELETED); + +GO @@ -1743,7 +1849,7 @@ /* ---------------------------------------------------------------------- */ /* PAGE_CONSTRAINTS_REF */ /* ---------------------------------------------------------------------- */ - + BEGIN ALTER TABLE PAGE_MENU @@ -1751,13 +1857,45 @@ REFERENCES PAGE_MENU (MENU_ID) ON DELETE NO ACTION ON UPDATE NO ACTION END -; +; + +GO + +CREATE TRIGGER [dbo].[trig_PAGE_MENU] + ON PAGE_MENU + INSTEAD OF DELETE + AS + + SET NOCOUNT ON; + + WITH cte AS + ( SELECT MENU_ID, PARENT_ID + FROM DELETED + UNION ALL + SELECT c.MENU_ID, c.PARENT_ID + FROM PAGE_MENU AS c + INNER JOIN cte AS p + ON c.PARENT_ID = p.MENU_ID + ) + SELECT * + into #tmp + FROM cte + OPTION (MAXRECURSION 32767) + + DELETE FROM PAGE_MENU + WHERE MENU_ID IN ( + SELECT MENU_ID FROM #tmp) + + drop table #tmp + + +GO BEGIN ALTER TABLE PAGE_MENU ADD CONSTRAINT PM_M_FK_PAGE_ID_PAGE FOREIGN KEY (PAGE_ID) REFERENCES PAGE (PAGE_ID) - ON DELETE CASCADE + ON DELETE NO ACTION END ; @@ -1789,13 +1927,47 @@ REFERENCES FRAGMENT (FRAGMENT_ID) ON DELETE NO ACTION ON UPDATE NO ACTION END -; +; + +GO + +CREATE TRIGGER [dbo].[trig_FRAGMENT] + ON FRAGMENT + INSTEAD OF DELETE + AS + + SET NOCOUNT ON; + + WITH cte AS + ( SELECT FRAGMENT_ID, PARENT_ID + FROM DELETED + UNION ALL + SELECT c.FRAGMENT_ID, c.PARENT_ID + FROM FRAGMENT AS c + INNER JOIN cte AS p + ON c.PARENT_ID = p.FRAGMENT_ID + ) + SELECT * + into #tmp + FROM cte + OPTION (MAXRECURSION 32767) + + DELETE FROM FRAGMENT + WHERE FRAGMENT_ID IN + (SELECT FRAGMENT_ID FROM #TMP) + + drop table #tmp + + + +GO + BEGIN ALTER TABLE FRAGMENT ADD CONSTRAINT FK_FRAGMENT_2 FOREIGN KEY (PAGE_ID) REFERENCES PAGE (PAGE_ID) - ON DELETE CASCADE + ON DELETE NO ACTION END ; diff -u 213/prefs-schema.sql 213patched/prefs-schema.sql --- 213/prefs-schema.sql 2008-05-22 15:36:51.000000000 +0300 +++ 213patched/prefs-schema.sql 2008-05-22 16:52:39.000000000 +0300 @@ -98,20 +98,61 @@ /* ---------------------------------------------------------------------- */ +/* DROP TRIGGERS */ +/* ---------------------------------------------------------------------- */ + +IF EXISTS (SELECT 1 FROM sysobjects WHERE type ='TR' AND name='trig_PREFS_NODE') + DROP TRIGGER trig_PREFS_NODE; + + +/* ---------------------------------------------------------------------- */ /* PREFS_PROPERTY_VALUE */ /* ---------------------------------------------------------------------- */ + + + BEGIN ALTER TABLE PREFS_NODE ADD CONSTRAINT FK_PREFS_NODE_1 FOREIGN KEY (PARENT_NODE_ID) REFERENCES PREFS_NODE (NODE_ID) - ON DELETE CASCADE + ON DELETE NO ACTION END ; +GO - - +CREATE TRIGGER [dbo].[trig_PREFS_NODE] + ON PREFS_NODE + INSTEAD OF DELETE + AS + + SET NOCOUNT ON; + + WITH cte AS + ( SELECT NODE_ID, PARENT_NODE_ID + FROM DELETED + UNION ALL + SELECT c.NODE_ID, c.PARENT_NODE_ID + FROM PREFS_NODE AS c + INNER JOIN cte AS p + ON c.PARENT_NODE_ID = p.NODE_ID + ) + SELECT * + into #tmp + FROM cte + OPTION (MAXRECURSION 32767) + + DELETE FROM PREFS_PROPERTY_VALUE + WHERE NODE_ID IN (SELECT NODE_ID FROM #tmp); + + DELETE FROM PREFS_NODE + WHERE NODE_ID IN( + SELECT NODE_ID FROM #TMP) + + drop table #tmp + +GO /* ---------------------------------------------------------------------- */ /* PREFS_NODE */ /* ---------------------------------------------------------------------- */ @@ -120,7 +161,7 @@ ALTER TABLE PREFS_PROPERTY_VALUE ADD CONSTRAINT PREFS_PROPERTY_VALUE_FK_1 FOREIGN KEY (NODE_ID) REFERENCES PREFS_NODE (NODE_ID) - ON DELETE CASCADE + ON DELETE NO ACTION END ; diff -u 213/security-schema.sql 213patched/security-schema.sql --- 213/security-schema.sql 2008-05-22 15:36:51.000000000 +0300 +++ 213patched/security-schema.sql 2008-05-22 16:55:03.000000000 +0300 @@ -604,8 +604,40 @@ /* ---------------------------------------------------------------------- */ +/* ---------------------------------------------------------------------- */ +/* DROP TRIGGERS */ +/* ---------------------------------------------------------------------- */ + +IF EXISTS (SELECT 1 FROM sysobjects WHERE type ='TR' AND name='trig_SECURITY_PRINCIPAL') + DROP TRIGGER trig_SECURITY_PRINCIPAL; + + + +GO + +CREATE TRIGGER [dbo].[trig_SECURITY_PRINCIPAL] + ON SECURITY_PRINCIPAL + INSTEAD OF DELETE + AS + + SET NOCOUNT ON; + DELETE FROM SSO_PRINCIPAL_TO_REMOTE + WHERE REMOTE_PRINCIPAL_ID IN (SELECT PRINCIPAL_ID FROM DELETED); + DELETE FROM SECURITY_USER_ROLE + WHERE USER_ID IN (SELECT PRINCIPAL_ID FROM DELETED); + + DELETE FROM SECURITY_USER_GROUP + WHERE USER_ID IN (SELECT PRINCIPAL_ID FROM DELETED); + + DELETE FROM SECURITY_GROUP_ROLE + WHERE ROLE_ID IN (SELECT PRINCIPAL_ID FROM DELETED); + + DELETE FROM SECURITY_PRINCIPAL + WHERE PRINCIPAL_ID IN (SELECT PRINCIPAL_ID FROM DELETED); + +GO /* ---------------------------------------------------------------------- */ /* SECURITY_PRINCIPAL */ /* ---------------------------------------------------------------------- */ @@ -691,15 +723,15 @@ /* ---------------------------------------------------------------------- */ /* SSO_SITE_TO_PRINCIPALS */ /* ---------------------------------------------------------------------- */ - + BEGIN ALTER TABLE SSO_PRINCIPAL_TO_REMOTE ADD CONSTRAINT FK_SSO_PRINCIPAL_TO_REMOTE_1 FOREIGN KEY (PRINCIPAL_ID) REFERENCES SECURITY_PRINCIPAL (PRINCIPAL_ID) - ON DELETE NO ACTION ON UPDATE NO ACTION + ON DELETE CASCADE ON UPDATE NO ACTION END -; +; BEGIN @@ -708,7 +740,7 @@ REFERENCES SECURITY_PRINCIPAL (PRINCIPAL_ID) ON DELETE NO ACTION ON UPDATE NO ACTION END -; +; @@ -766,9 +798,9 @@ ALTER TABLE SECURITY_USER_ROLE ADD CONSTRAINT FK_SECURITY_USER_ROLE_1 FOREIGN KEY (ROLE_ID) REFERENCES SECURITY_PRINCIPAL (PRINCIPAL_ID) - ON DELETE NO ACTION ON UPDATE NO ACTION + ON DELETE CASCADE ON UPDATE NO ACTION END -; +; BEGIN ALTER TABLE SECURITY_USER_ROLE @@ -776,7 +808,7 @@ REFERENCES SECURITY_PRINCIPAL (PRINCIPAL_ID) ON DELETE NO ACTION ON UPDATE NO ACTION END -; +; @@ -788,7 +820,7 @@ ALTER TABLE SECURITY_USER_GROUP ADD CONSTRAINT FK_SECURITY_USER_GROUP_1 FOREIGN KEY (GROUP_ID) REFERENCES SECURITY_PRINCIPAL (PRINCIPAL_ID) - ON DELETE NO ACTION ON UPDATE NO ACTION + ON DELETE CASCADE ON UPDATE NO ACTION END ; @@ -807,22 +839,22 @@ /* ---------------------------------------------------------------------- */ /* SECURITY_USER_GROUP */ /* ---------------------------------------------------------------------- */ -/* + BEGIN ALTER TABLE SECURITY_GROUP_ROLE ADD CONSTRAINT FK_SECURITY_GROUP_ROLE_1 FOREIGN KEY (GROUP_ID) REFERENCES SECURITY_PRINCIPAL (PRINCIPAL_ID) ON DELETE CASCADE END -; */ +; -/* BEGIN ALTER TABLE SECURITY_GROUP_ROLE ADD CONSTRAINT FK_SECURITY_GROUP_ROLE_2 FOREIGN KEY (ROLE_ID) REFERENCES SECURITY_PRINCIPAL (PRINCIPAL_ID) - ON DELETE CASCADE + ON DELETE NO ACTION END -; */ +; + Only in 213: tg_folder.sql Only in 213: tg_folder_menu.sql Only in 213: tg_fragment.sql Only in 213: tg_page_menu.sql Only in 213: tg_security_principal.sql