2016-04-02 29 views
0

İlk kez gönderme satisfys nerede Tetik yüzden benimle ayı, ekleme sonra başka tablodaki sütun güncellemek için: CWUsers, CWGamesList ve CWOwnsGame:MySQL - bu diğer değerleri

3 tablolar var.

CWUsers, satın aldıkları oyunlar aracılığıyla kazandıkları bir kullanıcı adı ve mevcut sadakat puanlarını içerir.

CWGamesList, oyunun adını, konsol türünü ve oyunu satın alırken kullanıcının alacağı sadakat puanlarını içerir.

CWOwnsGame, kullanıcıların adını, oyunun adını ve konsol türünü kaydettiği bir işlem tablosudur.

Bir oyun satın aldıktan sonra CWUsers tablosunu sadakat noktaları ile güncellemede sorun yaşadım.

Başlangıçta böyle CWOwnsGame içine yerleştirdikten sonra bir tetikleyici vardı: Biri mesela bu sadece eser rağmen

UPDATE CWUSERS SET loyaltyPoints = loyaltyPoints + 
(SELECT loyaltyPoints FROM CWGameList WHERE gameConsole = "Wii" AND gameName = "Mario") 
WHERE username = "bob" 

, bunu satın herhangi bir oyun için çalışması nasıl.

teşekkürler sıranın iki sürümlerine erişim değiştirilen sahip bir row tetikleyici olarak

cevap

0

: Bu NEW içeren (o var olup olmadığını) edildi ve aynı OLD satır içerir o olacak şekilde kürek (o var olacaktır eğer .)

size yapmak için Eğer açıklandığı gibi r tetik çalışması, bunu gibi NEW değerleri kullanılarak WHERE maddesini şart olacaktır:

CREATE TRIGGER update_loyalty_points 
    AFTER INSERT ON CWUserOwnsGame 
    FOR EACH ROW 
    UPDATE CWUsers 
     SET loyaltyPoints = loyaltyPoints + 
     (SELECT loyaltyPoints 
      FROM CWGameList 
      WHERE gameConsole = NEW.cName 
      AND gameName = NEW.gName) 
     WHERE username = NEW.uName; 

Ben Tablolar arasında sürekli Sütunlarınızı adında ettik farz ettik. NEW'daki doğru sütunların CWOwnsGame'daki sütunlarla aynı ada sahip olduğunu unutmayın.

+0

Cevabınız için teşekkür ederiz! Bunu denediğimde bir hata alıyorum :) –

+0

Hmm, vereceğim. –

+0

"Unkown column 'gameConsole' demek." CWOwnsGame "dan uygun sütun olurdu. Sadece sütun adlarını tahmin ediyordum. –

İlgili konular