|
@@ -168,18 +168,37 @@ WHERE a.classify_id IN (SELECT classify_id FROM classify_cte);`
|
|
|
}
|
|
|
|
|
|
func DeleteEdbClassify(classifyId int) (err error) {
|
|
|
- sql := ` DELETE FROM edb_classify
|
|
|
- WHERE classify_id IN(
|
|
|
- SELECT t.classify_id FROM
|
|
|
- (
|
|
|
- SELECT rd.*
|
|
|
- FROM (SELECT * FROM edb_classify WHERE parent_id IS NOT NULL) rd,
|
|
|
- (SELECT @pid := ?) pd
|
|
|
- WHERE FIND_IN_SET(parent_id, @pid) > 0
|
|
|
- AND @pid := CONCAT(@pid, ',', classify_id)
|
|
|
- UNION SELECT * FROM edb_classify WHERE classify_id = @pid
|
|
|
- )AS t
|
|
|
- ) `
|
|
|
+ //sql := ` DELETE FROM edb_classify
|
|
|
+ // WHERE classify_id IN(
|
|
|
+ // SELECT t.classify_id FROM
|
|
|
+ // (
|
|
|
+ // SELECT rd.*
|
|
|
+ // FROM (SELECT * FROM edb_classify WHERE parent_id IS NOT NULL) rd,
|
|
|
+ // (SELECT @pid := ?) pd
|
|
|
+ // WHERE FIND_IN_SET(parent_id, @pid) > 0
|
|
|
+ // AND @pid := CONCAT(@pid, ',', classify_id)
|
|
|
+ // UNION SELECT * FROM edb_classify WHERE classify_id = @pid
|
|
|
+ // )AS t
|
|
|
+ // ) `
|
|
|
+
|
|
|
+ sql := `WITH RECURSIVE ClassifyHierarchy ( classify_id, parent_id ) AS
|
|
|
+ (
|
|
|
+ SELECT classify_id,
|
|
|
+ parent_id
|
|
|
+ FROM edb_classify
|
|
|
+ WHERE parent_id = ?
|
|
|
+ UNION ALL
|
|
|
+ SELECT e.classify_id,
|
|
|
+ e.parent_id
|
|
|
+ FROM edb_classify e
|
|
|
+ INNER JOIN ClassifyHierarchy ch
|
|
|
+ ON e.parent_id = ch.classify_id
|
|
|
+ )
|
|
|
+DELETE
|
|
|
+ FROM edb_classify
|
|
|
+ WHERE classify_id IN ( SELECT classify_id
|
|
|
+ FROM ClassifyHierarchy
|
|
|
+ );`
|
|
|
err = global.DmSQL["data"].Exec(sql, classifyId).Error
|
|
|
|
|
|
return
|