2012-04-17 112 views
0

我有2頁版本的表是這樣的:MySQL的INSERT,選擇多行

項目:

  • ID
  • rev_id
  • 刪除

子項:

  • ID
  • rev_id
  • PARENT_ID
  • 刪除

我從http://kristiannielsen.livejournal.com/6745.html明白什麼,這是很容易和快速的把我對象的所有最新版本的我的表是這樣的:

但是當用戶刪除的記錄它會很酷,如果我可以插入一個新的紀錄,刪除是1作爲一個新的記錄。我發現這裏:https://stackoverflow.com/a/4039781/672989,我可以插入這樣的事情:

INSERT INTO table (id, rev_id, name, deleted) 
SELECT id, rev_id, name, 1 FROM Items WHERE id = 1 ORDER BY rev_id DESC LIMIT 1 

但是,如果在項目表中的項目被刪除= 1,我想與刪除= 1添加新記錄,爲所有子項,其中PARENT_ID子項目表中的items.id也是如此。一種簡單的方法是做什麼的,是否可以用一個查詢?而如果我甚至有另一個subsubitems表,我怎麼能達到同樣的呢?

+0

你需要添加新記錄,或者只是更新現有的?爲什麼不乾脆:UPDATE子項設置的已刪除= 1 WHERE PARENT_ID = {$ id}二 – 2012-04-17 19:42:18

+0

沒有真正增加,以保持舊版本完整:) – Tieme 2012-04-17 21:29:35

回答

0

你需要創建一個覆蓋如果父已如此標記爲deleted值「開刀片」觸發:

DELIMITER ;; 

CREATE TRIGGER foo BEFORE INSERT ON Items FOR EACH ROW 
    IF (SELECT deleted FROM Items WHERE id = NEW.parent_id) THEN 
    SET NEW.deleted := 1; 
    END IF;; 

DELIMITER ;