Cuba bungkus pernyataan CASE/bersyarat di dalam pencetus MySQL
P粉311089279
P粉311089279 2023-09-11 20:55:31
0
1
877

Saya ada pencetus:

CREATE TRIGGER Moves AFTER INSERT ON Rolls FOR EACH ROW UPDATE Players CASE WHEN P_Location + NEW.Rolls < 17 THEN SET P_Location = P_Location + NEW.Rolls WHERE id = NEW.Player_id ELSE SET P_Location = NEW.Rolls - (16 - P_Location) END;

Tetapi sintaks tidak betul di sesetengah tempat dan menghasilkan ralat. Saya telah menyemak soalan serupa di tapak ini, tetapi soalan yang saya lihat nampaknya menggunakan kaedah yang nampaknya tidak berkesan dalam kes ini (khususnya menggunakanIF). Saya harap syarat utama adalah

IF P_Location + NEW.Rolls < 17 THEN SET P_Location = P_Location + NEW.Rolls WHERE id = NEW.Player_id

dan bahagianELSEialah

SET P_Location = NEW.Rolls - (16 - P_Location)

Di dalam picu. Bolehkah sesiapa menerangkan bagaimana saya boleh melakukan ini?

P粉311089279
P粉311089279

membalas semua (1)
P粉956441054

Ungkapan CASE mesti dinilai kepada skalar, tetapi anda menyambungkan klausa lain melalui ungkapan CASE.

Anda boleh melakukannya supaya hasil CASE mengembalikan skalar dan menetapkan skalar itu kepada lajur P_Location.

UPDATE Players SET P_Location = CASE WHEN P_Location + NEW.Rolls < 17 THEN P_Location + NEW.Rolls ELSE NEW.Rolls - (16 - P_Location) END WHERE id = NEW.Player_id;
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!