簡而言之:我有一個2列的表:一個是用戶名,另一個是暱稱。 我有另一個表,我有2列:一個是用戶名,另一個是countNicknames。MySQL中的外鍵參考innodb
我想countNicknames包含每個用戶有(每當我插入一個新的綽號到表1,table2.countNicknames下的值將自動更新暱稱的數量。
能否請您寫下來如何構建第二個表引用的第一個?
簡而言之:我有一個2列的表:一個是用戶名,另一個是暱稱。 我有另一個表,我有2列:一個是用戶名,另一個是countNicknames。MySQL中的外鍵參考innodb
我想countNicknames包含每個用戶有(每當我插入一個新的綽號到表1,table2.countNicknames下的值將自動更新暱稱的數量。
能否請您寫下來如何構建第二個表引用的第一個?
爲什麼不指望當你需要的價值?
嘛,@拉塞的建議是更好的,但是......有
其他兩個
另一個選項...
MySql有觸發器嗎?如果是,則在第一個表上添加Insert,Update,Delete觸發器,每次插入記錄時更新(或根據需要插入或刪除)第二個表的CountNickNames屬性,從第一個表中更新或刪除.. 。
創建觸發器NickNameCountTrig在NickNameCountTable 插入,更新,刪除 作爲 更新NCT設置 CountNickNames = (SELECT COUNT()從FirstTable 其中name = nct.Name) 從NickNameCountTable NCT 其中name在(從插入中選擇不同名稱 聯盟 選擇已刪除的不同名稱) - ----------------------------------------- ------ 插入NickNameCountTable(名稱,CountNickNames) 選擇的名稱,數()從FirstTable英尺 凡NOT EXISTS (SELECT * FROM NickNameCountTable 其中name = ft.Name) - ---- - 這是可選----------------------- 刪除NickNameCountTable 其中CountNickNames = 0
用MySQL已經索引視圖(或一些equivilent )?顯然不是 - 所以不要介意這個選項....
MySQL沒有索引/物化視圖。儘管如此,由於某些奇怪的原因,MySQL視圖不允許其中的子查詢。 – 2009-12-24 19:58:23
啊,那麼...沒關係...... – 2009-12-24 20:07:36
我想countNicknames包含暱稱的數量每個用戶有(每當我插入一個新的綽號到表1,表2下的值。 countNicknames將自動更新。
這實際上是什麼看法就行了。
CREATE OR REPLACE VIEW user_nickname_count AS
SELECT t.username,
COUNT(*) 'countNicknames'
FROM TABLE t
GROUP BY t.username
視圖看起來就像一張桌子,所以你可以加入它,如果需要的話。唯一的開銷是它實際上只是一個正在運行的SELECT查詢 - 這些值是按需計算的,而不是必須設置觸發器。
同意,更可靠。 – awithrow 2009-12-24 19:46:34