core-jgi/db/maintain/Maintenance/AD_TreeNode_Check.sql

50 lines
1.3 KiB
MySQL
Raw Normal View History

2006-11-17 10:06:54 +07:00
/**
* Check Tree (Nodes)
* (Run manually!)
* (** Not tested as database here is clean, so back up first **)
*
* $Id: AD_TreeNode_Check.sql,v 1.1 2006/04/21 17:51:58 jjanke Exp $
*
SELECT AD_Tree_ID, Node_ID
FROM AD_TreeNode
GROUP BY AD_Tree_ID, Node_ID HAVING COUNT(*) > 1
/
SELECT AD_Tree_ID, Node_ID
FROM AD_TreeNodeMM
GROUP BY AD_Tree_ID, Node_ID HAVING COUNT(*) > 1
/
SELECT AD_Tree_ID, Node_ID
FROM AD_TreeNodePR
GROUP BY AD_Tree_ID, Node_ID HAVING COUNT(*) > 1
/
SELECT AD_Tree_ID, Node_ID
FROM AD_TreeNodeBP
GROUP BY AD_Tree_ID, Node_ID HAVING COUNT(*) > 1
/
-- Need to be modofied for the different AD_TreeNode tables
DELETE AD_TreeNode tn
WHERE (AD_Tree_ID, Node_ID) IN
(SELECT AD_Tree_ID, Node_ID FROM AD_TreeNode
GROUP BY AD_Tree_ID, Node_ID HAVING COUNT(*) > 1)
AND ROWID=(SELECT ROWID FROM AD_TreeNode xx
WHERE tn.AD_Tree_ID=xx.AD_Tree_ID AND tn.Node_ID=xx.Node_ID AND ROWNUM=1)
/
-- Need to be modofied for the different AD_TreeNode tables
ALTER TABLE AD_TREENODE
ADD CONSTRAINT AD_TREENODE_KEY
PRIMARY KEY (AD_TREE_ID,NODE_ID)
USING INDEX TABLESPACE INDX
/
SELECT * FROM AD_Menu
WHERE AD_Menu_ID NOT IN (SELECT Node_ID FROM AD_TreeNodeMM)
SELECT *
DELETE FROM AD_TreeNodeMM
WHERE Node_ID NOT IN (SELECT AD_Menu_ID FROM AD_Menu)
COMMIT