mysql önceki girişlere dayalı bir tabloyu güncelleştirmek için nasıl

1 Cevap php

I am having a serious trouble using triggers in mysql. Basically I am trying to update a row on after insert. I am using the existing value in the row and trying to update an other column of same row.

Ex:

Existing_Name Actual_Name
Product_Arc1  Arc1
Product_Arc2  Arc2
Product_Arc3

I Existing_Name değerini alarak ve bunun ikinci bölümünü ayıklanması ve Actual_Name kullanarak tetikler güncelliyorum. Fakat MySQL aynı tablo tetiği güncelleme desteklemiyor beri aktive edilmiştir? İstediğimi yapmak için herhangi bir yolu var mı?

Şimdi olduğu gibi, ben aynı etkiyi gerçekleştirmek için PHP komut dosyası kullanıyorum. Ama bu veritabanında bazı değişiklikler olduğunda web tarayıcısından bu komut tetikleyen tutmak için son kullanıcı gerektirir.

Herhangi bir fikir takdir.

Teşekkürler.

1 Cevap

Böyle olmak zorunda mı bir tetikleyici "bir after insert"? Eğer değiştirmek istediğiniz alanın değerini hesaplamak için bir auto_increment değeri gerekirse, bu durum olurdu. Aksi takdirde "insert önce" tetik yapmalıdır. Bu SET NEW.fieldname = newvalue ile sokulacak alanların değerlerini değiştirmek

Örneğin adlı tablosunu atalım

CREATE TABLE foo (id int auto_increment, x int, y int, primary key(id))

ve create a before insert trigger

delimiter |

CREATE TRIGGER footrigger BEFORE INSERT ON foo
  FOR EACH ROW BEGIN
    IF NEW.y > NEW.x THEN
       SET NEW.y = -1;
    END IF;
  END;
|

Ve şimdi iki kayıtlarını, biri y = x ve y tane> x eklemek izin

INSERT INTO foo (x,y) VALUES (1,1), (1,2)

A SELECT x,y FROM foo sonra döner

"x";"y"
"1";"1"
"1";"-1"