50 lines
1.3 KiB
MySQL
50 lines
1.3 KiB
MySQL
|
/**
|
||
|
* 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
|